Deot
Deot
大致了解原理实现, 粘帖一段[Vue源码片段](https://github.com/vuejs/vue/blob/dev/src/core/observer/array.js),可以直接`Chrome`执行 ```js function def (obj, key, val, enumerable) { Object.defineProperty(obj, key, { value: val, enumerable: !!enumerable, writable: true, configurable: true }) } const arrayProto = Array.prototype const arrayMethods =...
是不是应该把`createDocumentFragment`这个概念引进来
@youngwind 使用 `DocumentFragment` 处理节点,速度和性能远远优于直接操作 `DOM`,我在`preact`源码里看到,可以查看一下
@shadeofgod 不是这样的,如果你一次性插入`DOM`,和传统操作效率又有什么区别,`React`还有`DOM diff`,一次性DOM是指从根节点开始生成虚拟DOM,前后对比,从根节点开始`diff`,有`diff`的地方再批量`DOM`处理;简单的说就是,虚拟DOM不是一次性插入的真实DOM里,React中有`DOM diff`,Vue用的是`createDocumentFragment `(好像是)!
@shadeofgod 好像又讨论了其他问题,我是指原生操作; 我可能会存在下面疑惑(可以帮我解答下😊): 1. DOM属性值获取和操作DOM是否一样耗时我不是很清楚? 2. 在简单的ui变化下,比如就只改变一个纯文本,和传统的效率并没有什么区别; 反而react要从根节点开始diff,反而耗时; 3. 在复杂ui操作上,以传统节点操作上,假如开发者清楚知道要需要修改的哪部分的数据,删除,移动哪部分的节点,和react操作没啥区别,react要从根节点开始diff,反而耗时; 我的理解是:数据驱动,虚拟DOM更趋向的是提升了开发效率,减少开发者各种不必要的DOM操作达到性能提升
> 框架的数据更新: > > - React => 虚拟DOM > - Vue => getter/setter > - Angular => 脏检查 这上面有点疑惑,三大框架虚拟Dom及Dom diff的实现先不去管,数据更新应该是指改变数据 - React => setState => dom diff - Vue2 =>...
理解有点偏差. "最终是通过什么钩子去触发数据变更、dom diff";
@Brooooooklyn 好像有点问题; `npm run compile_serve`报错,只能使用`npm run dev`了; npm ERR! Darwin 16.4.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "compile_serve" npm ERR! node v7.5.0 npm ERR! npm v4.1.2 npm ERR! code ELIFECYCLE...
@zwwill 请教一个问题关于热更新。 在`platform/*`下安卓和苹果都是产生各自的安装包,js是集成进去的,热更新不知道该如何下手?(没有找到正确的方式)
A new problem after #6614 fixed