实习期间问题总结
主要针对实习期间,接触的部分问题进行总结,后续会不间断的补充,作为实习期间的回顾。
1,git ,github和gitlab的关系
git 是一个版本控制工具,github是一个用git做版本控制的项目托管平台,他是一个网站,提供给用户空间创建git仓库,保存用户的一些数据文档或代码等。gitlab是基于git的项目管理软件,gitlab是一个用于仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的web服务。三者都是基于git的,可以说是git的衍生品。
2,关于SSH密钥
ssh是一种安全的传输模式,github要求推送代码的用户是合法的,所以每次推送时候都要输入账号密码,用以验证你是否为合法用户,为了省去每次都要输入密码的步骤,所以采用ssh保证安全传输。
3,为什么驼峰命名法定义组件名 ( 例如:MyComponentName)时,引用形式却是短横线分隔命名,他们的区别?
因为vue.js组件中的Prop中特性名大小写不敏感,所以浏览器会把所有大写字符解释为小写字符。而在DOM 中对大小写是敏感的,这意味着当你使用 DOM 中的模板时,camelCase (驼峰命名法) 的 prop 名需要使用其等价的 kebab-case (短横线分隔命名) 命名。
4,if 语句后面的分号,为什么要加分号,为什么不加分号?
if的语法是这样的:if ( ) 后面必须跟着一条语句,作为if的执行语句。执行语句后面自然会有分号,这分号同时作为 if 语句的结束标志。但是也可以让 if 执行多条语句,这就需要将多条语句用 { } 括起来,形成语句块,语句块会被视为“一条语句”,所以如果 if 后面有用大括号括起来的语句块的话,就不用再加上结尾的分号了,结尾大括号就标志了 if 语句的结束。当if(); 后面的语句是空语句时,就需要加分号;若是if() s=b;这种形式 分号就在s=b后面了。
5,vue组件中定义的属性放data和computed里的区别是什么?
data
对象的属性值发生改变时,视图将会产生“响应”,即匹配更新为新的值。当这些数据改变时,视图会进行重渲染。值得注意的是只有当实例被创建时,在 data
中存在的属性才是响应式的。
事件驱动编程底层依赖于事件循环(event loop),事件循环基本上是事件检测和事件处理器触发这两种函数不断循环调用的一个结构。在每次循环里,事件循环机制需要检测发生了哪些事件,当事件发生时,它找到对应的回调函数并调用它。(https://www.jb51.net/article/53812.htm)
事件循环只是运行在进程内的一个线程,当事件发生时,事件处理器可以单独运行并且不会被中断,也就是说:
1.在某个特定时刻最多有一个事件回调函数运行
2.任何事件处理器运行时都不会被中断
事件循环:1,node平台将一个事件任务连同该任务的回调函数放到一个事件循环系统中;2,事件循环系统高效的管理系统线程池同时高效执行每一个任务(耗时间的任务,即阻塞操作);3,当然任务执行完成过后自动执行回调函数。
总结:node中将所有的阻塞操作都交给了内部实现的线程池,node本身主线程主要就是不断的往返调度。
(也可参考相关链接,讲的挺好:https://zhuanlan.zhihu.com/p/33058983 http://www.ruanyifeng.com/blog/2014/10/event-loop.html)
7,闭包
闭包可以理解为一个特殊的函数,但是它可以继承并访问它自身被定义的那个作用域里的变量。当你将一个回调函数作为参数传递给另外一个函数时,它稍候会被调用,神奇的是,这个回调函数被稍候调用时,它居然记住了它自身定义所在的那个上下文以及父上下文里的变量,而且还可以正常访问它们。