视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
js中mvvm模式实现的原理(附代码)
2020-11-27 19:30:14 责编:小采
文档
 本篇文章给大家带来的内容是关于js中mvvm模式实现的原理(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

以Vue.js框架为例子,使用的mvvm模式


view指的是页面的html和css构成的视图。
model指的是从后端取到的数据模型
viewmodel 指的是前端开发人员组织生成和维护的视图数据层。这一层包含的是视图行为和数据。
视图行为指的是如页面加载进来时请求什么,将指定的数据放到指定的元素上,点击某个元素触发某事件。当viewmodel处理好后则会将对应的数据展现到view层。

MVVM模式的优点在于当view和viewmodel的双向绑定,当数据改变后不需要改修改DOM结构。
例如原生js实现一个input的值绑定另一个div的文本,首先需要监听input事件,每次改变触发一次div节点的文本子节点进行修改。使用了MVVM模式则可以自动检测到数据的改变从而修改div文本

mvvm的实现原理:利用Object.defineProperty(),该方法有get、set两个属性方法,从而获取对象属性的值,给对象属性重新赋值

//定义一个对象
let obj = {}
Object.defineProperty(obj,'txt'{
 //obj.txt属性赋值方法,同时为input、p文本赋同一个值
 set(val){
 document.getElementById('input').value = val
 document.getElementById('output').innerHTML = val
 },
 //获取txt属性的方法
 get(){
 return obj;
 }
})
//监听事件 触发的时候会给obj.txt重新赋值,从而实现双向绑定
 document.addEventListener('keyup',(e)=>{
 obj.txt = e.target.value;
 })

下载本文
显示全文
专题