虚拟dom

mac2024-04-11  35

Virtual DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。可以类比 CPU 和硬盘,既然硬盘这么慢,我们就在它们之间加个缓存:既然 DOM 这么慢,我们就在它们 JS 和 DOM 之间加个缓存。CPU(JS)只操作内存(Virtual DOM),最后的时候再把变更写入硬盘(DOM)。

用户操作(状态改变)>js操作dom>更新页面内容 mvvm框架:状态与视图绑定 视图会随着状态的改变而随之改变 mvvm(双向绑定引擎)降低了维护的状态 以及视图的复杂程度 减少了代码中视图更新的复杂逻辑

还有一种更直接的方法只要状态发生改变 就用模板引擎重新渲染整个视图,然后新的视图替换掉旧的视图 用户操作的时候还是在js里面更新状态 但是不用手动操作dom了 而是用模板引擎重新渲染一遍 然后设置一下innerHTML就完事了 这种方法首先会很慢 因为是整个重新渲染 缺点稍微有点改变 及重新渲染整个 性价比低 结论:对于局部的小时图更新 可以 (Backbone就是这么干的) 大型视图,全局应用状态变更的时候 要更新页面较多局部视图的时候 这样就不行

但是这里要明白和记住这种做法,因为后面你会发现,其实 Virtual DOM 就是这么做的,只是加了一些特别的步骤来避免了整棵 DOM 树变更。

最新回复(0)