减少js对性能的影响:
- js放文件尾部。
- 合并js文件。减少外链js,合并js文件。单个文件比多个文件加载快,因为多个文件中间会执行上一个js文件。
一个大的js文件下载会锁死浏览器一段时间。所以我们需要逐步加载文件。 - 无阻塞脚本
- defer 属性。指明脚本不会修改dom,可延迟执行。脚本可放任务位置。只下载不执行,直到dom加载完成。
- 动态脚本元素。无论在何时启动下载,文件的下载和执行过程不会阻塞页面其他进程。
script标签在head里面创建更保险,在body可能在ie下没有加撤完成会报错。
动态脚本:跨浏览器兼容性和易用,解决无阻塞加载问题。 - 使用ajax创建脚本注入页面中。这里涉及到响应码,返回的status应该为200或者小于300(有效值),或者304(从缓存中获取)
跨浏览器,无阻塞。js需要和页面同域,并且不能从CDN下载,大型应用不适合。
设计理念:由少量代码来加载丰富的功能组件。 种子文件->加载丰富的功能组件
推荐:使用动态脚本加载。
经典库:lazyload.js,LAB.js