css,js加载阻塞页面渲染的理解
页面要等所有的css加载解析完毕后才会渲染,
css 的加载会阻塞后面dom的解析,
js的加载和执行后阻塞后面dom的解析
defer 的script 的下载不会阻塞dom的解析,defer的script下载完毕后会按顺序执行,且在DOMContentLoad 触发前执行,当所有的defer下载完毕后,再按顺序执行。ie10及以下可能不会按顺序执行
async 的sciprt 的下载不会阻塞dom的解析,async的scipt下载完毕后不一定会按顺序执行,且执行时间在domContentLoad触发前后都有可能 。在合适的时间执行 ie10及支持
require js 就是使用的 async动态添加的脚本
require js 遵循 amd 即异步的模块定义,所有的模块都是异步加载的,使用前必须将所有的模块提前加载
seajs 遵循的是cmd 即通用的模块定义,模块可以预先加载,也可以异步加载,也在需要的时候同步加载。
综合上面的一些,对于页面首屏展示的优化建议是
首屏的css最好直接放在style内,然后js放在页面底部,或者使用ansy或defer