虚拟dom快在哪里?
来源:19-3 Redux 简介与实例演示
mzzlvy
2017-03-29
一开始以为是浏览器渲染dom很耗时间,而后来看到react的diff算法是只要有一处节点不同,那么就删除包括子节点的所有节点从新渲染。。。就跟我的理解矛盾了
或者说我的问题是没有虚拟dom时,js操作dom性能损耗在哪里?是js引擎线程和UI线程是互斥,渲染dom时js线程必须要等待的原因吗,还是浏览器渲染dom很耗时间?虚拟dom加快了哪里?是因为一次事件循环中只做一次dom修改吗?
还有个redux实际操作的问题,看到有一篇文档说redux是把组件分成ui组件和容器组件两类,ui组件只负责展示,而容器组件包裹ui组件,请求ajax,处理数据后把props传给ui组件,我想问下实际项目中是这样把每个组件分成这两个组件吗?会不会太繁琐?一个项目中有个十来二十个组件很正常,每个组件又分ui组件和容器组件,乘以2,每个组件又分为手机版和pc版,甚至平板,再乘以2,文件数量都要破百了,这都要打包到一个文件里去?
2回答
-
第一个问题建议看 vue 作者的回答:https://www.zhihu.com/question/31809713
第二个:redux 没有说要将组件分成那样啊,分成单独的文件只是分离一些逻辑,而那些分离出来的逻辑便于管理和公用。
012017-03-30 -
mzzlvy
提问者
2017-03-29
虽然老师给的链接 一半的内容都看不懂 但由此顿悟一些东西在此分享一下,如有错误请老师指出错误
js虽然天生亲近web,但它是一种独立的语言,和浏览器中互为黑盒的存在,DOM其实是浏览器提供给js操作的一套API,现在类比一下canvars就明白了,它提供一些方法和对象给你用,其他怎样实现与js无关。
vue,angular,还是react都是js框架,无论怎样优化都是js自身的处理逻辑与对不同API调用时机的优化
html和js没有直接联系,js更改网页有两种方式,一种是在html被浏览器解析之前的对html文本的字符串操作,也就是框架中的字符串模板或者jsx的语法糖,第二种是对html文件被浏览器解析之后文档的DOM操作
032017-03-30
相似问题