vue的原理:
响应式原理
把js对象传入vue实例做为data,vue将遍历data所有的property,使用Object.defineProperty把property转为getter/setter。Object.defineProperty在es5中不能shim,所以不支持ie8及更低版本浏览器。
getter和setter让vue能够追踪依赖,在property被访问和修改时通知变更,每个组件实例都有对应一个watcher实例,它在组件渲染中把接触过的数据property记录为依赖,之后当依赖项的setter触发时,会通知watcher,关联的组件会重新渲染。
React的原理:
props/state/render
当绑定的事件改变了组件的state或props,render会重新执行,其子组件也会render重新执行,此时render函数就会重新执行解析页面,解析时会使用新的数据,页面就会发生变化。另外,虚拟DOM使得render的性能会非常高。
angular定义了一种模版语言,扩展了HTML标记,可以定义各种数据绑定和逻辑指令,通过插值{{myHero}}来绑定属性名
angular的原理:
通过变更检测机制将应用状态的UI状态与数据的状态同步,变更检测器在运行时会检查数据模型的当前状态,并在下一轮迭代时将其和先前保存的状态进行比较。当应用逻辑更改组件数据时,变更检测器会更改绑定到视图中DOM属性上的值,同时,用户可以与UI进行交互,从而引发更改数据模型状态的事件,这些事件可以触发变更检测。