1首先js标签自带阻塞特性当网页加载遇到此标签的时候会去执行下载,并执行标签内部的函数方法(慢啊)
2常见做法比如说把js放在body底部,这样就先保证的dom元素的渲染,再加载js不会出现视觉上面的等待空白期
3上面的做法比较粗糙,我们也可以使用我们也可以使用元素的属性defer ,async进行异步加载,前者异步元素解析完之后加载,后者只是异步加载,存在浏览器兼容性的问题
4既然说到兼容性那第三方框架最大的基础特性就是解决兼容性问题,
a直接ajxa请求js文件这是优化方案这也是实现思路之一
b使用市面上常用的lazyload等等这些小型的框架体积也只要4k左右
5异步加载就解决所有问题了吗?然而并不是?正如我们使用的第三方框架一样经常会先引入jq,就是所谓的依赖,不同的js文件直接存在依赖关系都是异步加载的话,网络情况不可测,报错就是在所难免,必须保证A.js执行完才执行B.js。不管是js和jq都有方法支持比如说js的loadscript和jq的then都可以,常用的框架就是requirejs就是实现思想为模块注入,要用A加载A,先用B加载B。利用这个可以进行一些模块化的封装。