发表于: 2019-12-07 23:18:39
1 1142
今天完成的事情:
1 MVVM,MVC,MVP
2 Vue生命周期
明天计划的事情:
1 复习
遇到的问题:
1 暂无
收获:
MVC:通常使用控制器更新模型,视图从模型中获取数据渲染。用户操作,通过控制器去更新模型,通知视图进行更新
缺陷: 控制器承担的责任太大,项目愈加复杂,控制器中的代码会越来越臃肿,很不利于维护

MVP设计模式:Controller改名为Presenter,同时改变了通信方向
View发出一个事件给Presenter,控制器调取model或直接操作View,Presenter是核心 ,大部分的工作都在Presenter层,面向DOM进行开发(js,jquery) 缺陷同上

MVVM设计模式: Presenter改名为ViewModel,基本与MVP模式完全一致,唯一区别是它采用双向绑定
View和 Model 之间并没有直接的联系,而是通过ViewModel双向数据绑定把View层和Model层连接了起来,View数据的变化会同步到Model中,而Model数据的变化也会立即反应到View 上,面向数据开发(Vue、Angular 、 Ember)
大部分工作是在操作M层,DOM操作显著减少
1 beforeCreate 实例初始化后,创建Vue实例前,
2 created 实例被创建之后调用(挂载还没开始)
template有这个属性的话绑定元素就会按比如"<p>1<p>"这样输出,没有的话就把el对应的html作为模板(声明周期图)
下面3-8钩子在服务器渲染期间不被调用
3 beforeMount 挂载之前被调用,开始挂载编译生成的HTML,此时还没有有将编译出的html渲染到页面上
4 mounted el被新建vm.$el替换,并挂载到实例上后调用,它不会承诺所有子组件也都被挂载, 如果你希望等到整个视图都渲染完毕,可以用$nextTick( )
![]()

5 beforeUpdate 数据更新时调用,发生在虚拟DOM打补丁前
6 updated 数据更改导致的某个虚拟DOM 重新渲染和打补丁,在这之后会调用该钩子。注意它不会承诺所有子组件一起被重绘(当前组件的标签都会重绘),如果········如上方法。(初次渲染不会执行这个函数),在data数据更新之后执行。
7 beforeDestroy Vue实例销毁之前执行。在这一步,实例仍然完全可用
8 destroyed Vue实例销毁后调用,调用后Vue实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁
9 activated keep-alive 组件激活时可调用
10 deactivated keep-alive 组件停用时可调用
评论