文章博客

技术团队文档示例


Vue的基础知识(一)

<h4>你对MVVM的理解?与MVC有什么不同?</h4> <ul> <li>MVC指的是 Model-View-Controller ,即模型-视图-控制器。</li> <li>MVVM指的是 Model-View-ViewModel,即模型-视图-视图模型 模型:后端传递的数据 视图:所看到的页面 视图模型:是MVVM的核心,它是连接View与Model的桥梁,实现view的变化会自动更新到viewModel中,viewModel中的变化也会自动显示在view上,是一种<strong>数据驱动视图</strong>的模型</li> </ul> <h4>MVVM与MVC的区别</h4> <ul> <li>MVC中的controller在MVVM中演变成viewModel</li> <li>MVVM通过数据来显示视图,而不是通过节点</li> <li>MVVM主要解决MVC中大量的DOM操作,使页面渲染性能降低,加载速度慢,影响用户的体验问题。</li> </ul> <hr /> <h4>请说一下Vue响应数据的原理</h4> <p>Vue底层对于响应式数据的核心是Object.defineProperty,Vue在初始化数据时,会给data中的属性使用Object.defineProperty重新定义属性(劫持属性的getter和setter),当页面使用对应属性时,会进行依赖收集(收集当前组件的watcher),如果属性发生变化,会通知相关依赖进行更新操作。</p> <ul> <li>总结:vue通过数据劫持配合发布者-订阅的设计模式,内部通过Object.defineProperty()来劫持各个属性的getter和setter,在数据变化时通知订阅者,并触发相应的回调。</li> </ul> <hr /> <h4>讲一讲Vue是如何检测数组的变化?</h4> <p>核心思想:使用了函数劫持的方式,重写了数组的方法(push,pop,unshift,shift···) Vue将data中的数组,进行了原型链的重写,指向了自己所定义的数组原型方法,当调用数组的API时,可以通知依赖更新,如果数组中包含着引用类型,会对数组中的引用类型再次进行监控</p>

页面列表

ITEM_HTML