旁枝末梢(我好像稍微理解了mvc和mvvm)

#### CDN

> 由于服务器负荷或者传输距离等原因,我们访问某一个网站会很慢,这时候一个缓存机制的存在就显得很重要了

> CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。

 

 

#### MVC & MVVM

  • MVC:
    • V:view,视图层,展示UI布局
    • M:model,数据模型层,管理数据
    • C:controller,控制层,响应用户操作,并将 Model 更新到 View 上

 对于mvc概念,controller主要用来响应用户操作,根据用户的操作来修改model层,并进一步修改view层,即controller直接去修改view层,一般涉及到dom操作

  • MVVM:
    • M:model,数据模型层,管理用户数据
    • V:view,UI视图层
    • VM:view-model,视图模型层,连接数据层和视图层

对于mvvm概念,view-model取代mvc中的controller层,让开发者不用去根据用户的行为去操作dom,而是在view和model之间搭建起一个view-model,让两者相互绑定,对于开发者而言,可以直接通过对model进行操作从而来改变view(双向数据绑定)

 

两者的区别在于对于dom操作上,mvc需要开发者主动去操作dom,mvvm不需要,而让开发者把注意力关注在数据上

 

 

vue是典型的mvvm框架,当执行 new Vue() 时,Vue 就进入了初始化阶段,一方面Vue 会遍历 data 选项中的属性,并用 Object.defineProperty 将它们转为 getter/setter,实现数据变化监听功能;另一方面,Vue 的指令编译器Compile 对元素节点的指令进行扫描和解析,初始化视图,并订阅Watcher 来更新视图, 此时Wather 会将自己添加到消息订阅器中(Dep),初始化完毕。当数据发生变化时,Observer 中的 setter 方法被触发,setter 会立即调用Dep.notify(),Dep 开始遍历所有的订阅者,并调用订阅者的 update 方法,订阅者收到通知后对视图进行相应的更新。

 

 

 

module.exports && exports

  •  module.exports与exports默认都是指向同一个空对象
  • 没有module.exports的时候,exports在某种意义上是替代了module.exports的一种存在,相当于替身,不过exports功能受到局限,只能输出对象类型
  • module.exports存在的时候,exports便会失效,若两者同时存在,exports上定义的对象不会被输出,而是module.exports上定义的内容被输出
  • module.exports功能全面,能够输出各种数据类型

可以理解为没有module.exports的时候,exports可以代替其行使部分功能(输出对象类型),若module.exports在的时候,exports便没有了任何权利

posted @ 2017-06-27 19:15  waiting_h  阅读(175)  评论(0编辑  收藏  举报