如何压缩前端项目中 JS 的体积

在前端项目中,压缩 JavaScript 文件的体积可以提高网页加载速度和性能。下面是一些常用的方法来压缩前端项目中的 JavaScript 文件体积:

  • 使用压缩工具:使用专门的压缩工具可以自动化地压缩 JavaScript 代码。一些常用的工具包括 UglifyJS、Terser、Closure Compiler 等。这些工具可以删除注释、空格、不必要的字符,并进行代码优化,从而减小文件体积。

  • 混淆变量和函数名:通过将变量和函数名替换为更短、无意义的名称,可以减小文件体积。这种技术称为变量和函数名的混淆。混淆工具可以自动执行此操作,例如 UglifyJS 和 Terser。

  • 删除不必要的代码:检查 JavaScript 文件中是否存在不再使用的代码块、函数或变量。删除不必要的代码可以减小文件体积并提高性能。

  • 使用模块化开发:使用模块化开发可以将代码拆分为多个模块,每个模块只包含所需的功能。这样可以避免将整个 JavaScript 文件加载到页面中,只加载需要的模块,减小文件体积。

  • 使用压缩版的第三方库:如果项目中使用了第三方库,通常这些库都提供了压缩版的文件。使用压缩版的第三方库可以减小文件体积。

  • 避免重复代码:检查代码中是否存在重复的代码块,并将其提取为可复用的函数或模块。这样可以减小文件体积并提高代码的可维护性。

  • 开启 gzip 压缩:在服务器端开启 gzip 压缩可以减小传输的文件体积。当浏览器请求 JavaScript 文件时,服务器会将文件进行 gzip 压缩后再发送给浏览器,浏览器会解压缩并执行。

  • 使用动态导入:对于大型的 JavaScript 文件,可以使用动态导入来延迟加载文件。这样可以减小初始加载的文件体积,提高页面加载速度。

更细节一点的操作

  • 去除多余字符,eg:空格,换行、注释
  • 压缩变量名,函数名、属性名
  • 使用更简单的表达,eg:合并声明、布尔值简化
  • terser 或者 uglify,及流行的使用 Rust 编写的 swc 压缩混淆化 JS。
  • gzip 或者 brotli 压缩,在网关处(nginx)开启
  • 使用 webpack-bundle-analyzer 分析打包体积,替换占用较大体积的库,如 moment -> dayjs
  • 使用支持 Tree-Shaking 的库,对无引用的库或函数进行删除,如 lodash -> lodash/es
  • 对无法 Tree Shaking 的库,进行按需引入模块,如使用 import Button from ‘antd/lib/Button’,此处可手写 babel-plugin 自动完成,但不推荐
  • 使用 babel (css 为 postcss) 时采用 browserlist,越先进的浏览器所需要的 polyfill 越少,体积更小
  • code spliting,路由懒加载,只加载当前路由的包,按需加载其余的 chunk,首页 JS 体积变小 (PS: 次条不减小总体积,但减小首页体积)
    使用 webpack 的 splitChunksPlugin,把运行时、被引用多次的库进行分包,在分包时要注意避免某一个库被多次引用多次打包。此时分为多个 chunk,虽不能把总体积变小,但可提高加载性能 (PS: 此条不减小总体积,但可提升加载性能)

你可能感兴趣的:(JavaScript问题详解,前端,javascript,开发语言)