mvc mvvm mvp
mvc:
Model: 模型(用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法)
View: 视图(渲染页面)
Controller: 控制器(M和V之间的连接器,用于控制应用程序的流程,及页面的业务逻辑)
一种是通过 View 接受指令,传递给 Controller,然后对模型进行修改或者查找底层数据,最后把改动渲染在视图上。
另一种是通过controller接受指令,传给Controller
不适合小型,中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
视图与控制器间过于紧密连接.
视图对模型数据的低效率访问.
MVP(Model-View-Presenter)和MVC的相同之处在于:Controller/Presenter负责业务逻辑,Model管理数据,View负责显示.只不过是将 Controller 改名为 Presenter,同时改变了通信方向。
1。M、V、P之间双向通信。
2。View 与 Model 不通信,都通过 Presenter 传递。主要的程序逻辑在Presenter里实现。
3。View 非常薄,不部署任何业务逻辑,
4。Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互
MVVM
MVVM是Model-View-ViewModel的简写。在技术层面,WPF也带来了 诸如Binding(绑定)、Dependency Property(依赖属性)、Routed Events(路由事件)、Command(命令)、DataTemplate(数据模板)、ControlTemplate(控制模板)等新特性。MVVM模式其实是MV模式与WPF结合的应用方式时发展演变过来的一种新型架构模式。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
数据可视化框架
echart
highchart
d3
riot.js
1.容易上手
2.MVP模式,View 非常薄,不部署任何业务逻辑
3.只有很少的API
mount在标签构建完成,放在页面后执行。
unmount当标签从页面移除的时候执行。
在Riot中,内置了发布者,我们只需要通过简单的代码,就能创建一个类jQuery的发布者:
eventBus = riot.observable();
通过riot.observable生成的发布者,有 on, off, trigger, one等常用方法。on方法可以为元素绑定事件,trigger方法可以手动触发事件
// 监听事件 opts.on("event1", function(data1, data2){ // 监听event1事件 // data1和data2是trigger传入的参数 //
data1 = 1, data2 = 2 console.log(data1, data2); }); // 发布一个事件 // 该事件带有 1和2 作为参数 // 上面的on("event1")的回调fn将会执行 opts.trigger("event1", 1, 2); // 解除event1 的所有监听,第二个参数可选 // 如果有第二个参数[function],则只解绑该函数 opts.off("event1"); // one与on类似,只是one如果执行过一次,就自动解除绑定
opts.one("event1", function(data1){ console.log(data1); });
opts.trigger("event1", 1, 2);
vue双向绑定的原理
Mvvm定义MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。【模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方