实习期间问题总结

主要针对实习期间,接触的部分问题进行总结,后续会不间断的补充,作为实习期间的回顾。

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组件中定义的属性放datacomputed里的区别是什么? 

   data 对象的属性值发生改变时,视图将会产生,即匹配更新新的。当些数据改变时视图行重渲染。得注意的是只有当例被时,在 data 中存在的属性才是的。

    对于computed而言,对于任何复杂逻辑,都应当使计算属计算属性更易于测试和理解,而且算属性基于它们的依赖进行缓存的,只有在它的相关依赖发生改变时才会重新求
6,node.js中的事件驱动,什么是事件驱动?
事件驱动编程(Evnet-driven programming)是一种编程风格,由事件来决定程序的执行流程,事件由事件处理器(event handler)或事件回调(event callback)来处理,事件回调是当某个特定事件发生时被调用的函数,比如数据库返回了查询结果或者用户单击了一个按钮。当你感兴趣的事件发生时会调用你定义的函数,而不是简单的返回结果值,这种编程模型就叫事件驱动编程或异步编程,这是Node一个最明显的特性,这种编程模型意味着当前进程在执行I/O操作时不会被阻塞。

事件驱动编程底层依赖于事件循环(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,闭包

闭包可以理解为一个特殊的函数,但是它可以继承并访问它自身被定义的那个作用域里的变量。当你将一个回调函数作为参数传递给另外一个函数时,它稍候会被调用,神奇的是,这个回调函数被稍候调用时,它居然记住了它自身定义所在的那个上下文以及父上下文里的变量,而且还可以正常访问它们。 

待更新中。。。

原文地址:https://www.cnblogs.com/1833lljy/p/9245695.html