目录
-
- 一、MVC模式及与衍生的 MVP 和 MVVM 架构的区别
-
- 1、概念
- 2、各部分之间的通信方式
-
- MVC
- 衍生--MVP
- 衍生--MVVM
- 二、Vue 的 MVVM 简单分析
一、MVC模式及与衍生的 MVP 和 MVVM 架构的区别
阮一峰博客文章
1、概念
视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存
2、各部分之间的通信方式
MVC
- 单向
学习笔记1-Vue的MVVM 架构分析
衍生–MVP
- 双向
- 逻辑都部署在Presenter
学习笔记1-Vue的MVVM 架构分析
衍生–MVVM
- 双向绑定(data-binding):View的变动,自动反映在 ViewModel
- Presenter 改为 ViewModel
学习笔记1-Vue的MVVM 架构分析
二、Vue 的 MVVM 简单分析
- 通过script标签对引入Vue.js之后,我们会得到一个全局变量 Vue
- 查看Vue源代码发现:
- 是通过匿名函数封装的
- 匿名函数的格式( function ( arg1,arg2) {} )( a,b )
- 源代码封装的大致原理
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
(function ( global,factory) { // 形参
global.Vue = factory // 可看出变量Vue是直接挂在window上的。factory函数对应的对应下面的function回调函数
})( this, function ( options ) { //实参: 参1:this指向全局; 参2:回调函数,返回值:返回的构造函数Vue;回调函数参数为接收的对象options
function Vue ( options ) { //构造函数。参数为对象options,上面接收。
this.name = options.name
this._init()
}
function _init () {
Vue.prototype.age = 18
Vue.prototype.id = 10
}
return Vue
})
var vm = new Vue({ //实例化
name: '1907'
})
console.log( vm )
综上,我们写一个简单的 hello Vue 案例,分析Vue里,这里谁是M 谁是V 谁是VM。
<!-- V -->
<div id="app">
<p> {{ info }} </p>
</div>
var VM = new Vue({
el: '#app',
data: { // M
info: 'Hello World'
}
})