前端开发中,JavaScript 变得越来越重要,页面载入中,JavaScript 占的比重也更高。不同与别的静态资源,例如图片和 SVG 图标。浏览器在解析 JavaScript 时花的时间要多得多。所以优化 JavaScript 也就变得非常重要。

减少 JavaScript 的网络传输开销 ​

Only sending the code a user needs. ​

一方面,只加载当前页面需要的 JavaScript 文件,可以使用 webpack 的code-splitting来解决。另一方面,懒加载一些不是必须的 JavaScript 文件。

Minification ​

使用terser来压缩 JavaScript 代码。

Compression ​

服务器开启 GZIP 来减少传输的文件大小。

Removing unused code. ​

针对一些第三方 JavaScript 库,可以使用Tree Shaking来移除不需要的代码。

Caching code to minimize network trips. ​

使用 ETag, Last-Modified, Cache-Control 三个配合有效的缓存 JavaScript 文件。

优化 JavaScript 下载和执行 ​

我们可以通过使用 async 或者 defer 来优化 JavaScript 的下载和执行,两个关键字的具体作用看下图:

js async defer

总结 ​

JavaScript 的优化并没有银弹,要根据具体项目的实际情况来处理。

参考 ​

HTTP caching

JavaScript Start-up Optimization

Loading Third-Party JavaScript