4-1 JS开销和如何缩短解析时间
js和html-css中,js开销是最大的,要解析编译后才运行。
可以用performance去观察,这里就不一一截图了,理解原理即可
网页的加载大概30%都耗在js中。
优化
例如引入的第三方库,loadsh等,可能里只用到1%的函数,那么就没必要其他也引入了。
解决
先加载用户看到的。
通过三点达到是否体验好
是否在加载(让用户知道在加载了)?
是否有有用的内容?
是否能用(交互)?
V8编译原理
理解好原理后能写出更利于编译器去解析和优化的代码,例如如果代码写的不够好那么优化器会发生逆优化的过程。
测试
注意2中是有字符串的参数
除掉字符串参数后
why?
因为之前的参数都是不变的,如果突然调用其他参数不一样的,那么之前优化的逻辑就不能用了。
先看看工作原理
优化机制
脚本流》单独开线程先解析30kb以上的文件
字节码缓存》缓存之前编译好的一些其他地方也用得到的代码
懒解析》只有用到才解析
函数优化
使用懒解析优化函数》这样就不会进行一个解析,在堆的内存也不用分配内存。
如果知道某些函数要执行 那么在定义的时候就可以调用
老版本的webpack编译后可能会去掉()可以用optimize.js解决
对象优化
其实最终还是针对v8的优化规则编写代码。
顺序初始化
例子2
例子3
V8引擎会对真数组极大优化。
把类数组转成真数组后遍历》开销低
例子4
### 例子2
HTML优化(占比较小)
深层嵌套导致domshu深遍历久
语义化标签方便浏览器解析。
js放底下不然阻塞dom加载
CSS优化
降低大小,先拿到先解析css
contain相当于独立渲染区域,即使修改了里面的内容也不会影响其他布局,例如这里有一万条数据,那么改了某条影响布局的内容,则这一万条数据都受到影响使用contain就不会了(不会重新计算样式)。