logo
  • 指南
  • 配置
  • 插件
  • API
  • 示例
  • 社区
  • Modern.js 2.x 文档
  • 简体中文
    • 简体中文
    • English
    • 开始
      介绍
      快速上手
      版本升级
      名词解释
      技术栈
      核心概念
      页面入口
      构建工具
      Web 服务器
      基础功能
      路由
      路由基础
      配置式路由
      数据管理
      数据获取
      数据写入
      数据缓存
      渲染
      服务端渲染(SSR)
      服务端流式渲染(Streaming SSR)
      渲染缓存
      静态站点生成(SSG)
      渲染预处理 (Render Preprocessing)
      样式开发
      引入 CSS
      使用 CSS Modules
      使用 CSS-in-JS
      使用 Tailwind CSS
      HTML 模板
      引用静态资源
      引用 JSON 文件
      引用 SVG 资源
      引用 Wasm 资源
      调试
      数据模拟(Mock)
      网络代理
      使用 Rsdoctor
      使用 Storybook
      测试
      Playwright
      Vitest
      Jest
      Cypress
      路径别名
      环境变量
      构建产物目录
      部署应用
      进阶功能
      使用 Rspack
      使用 BFF
      基础用法
      运行时框架
      扩展 BFF Server
      扩展一体化调用 SDK
      文件上传
      跨项目调用
      优化页面性能
      代码分割
      静态资源内联
      产物体积优化
      React Compiler
      提升构建性能
      浏览器兼容性
      配置底层工具
      源码构建模式
      服务端监控
      Monitors
      日志事件
      指标事件
      国际化
      基础概念
      快速开始
      配置说明
      语言检测
      资源加载
      路由集成
      API 参考
      高级用法
      最佳实践
      自定义 Web Server
      专题详解
      模块联邦
      简介
      开始使用
      应用级别模块
      服务端渲染
      部署
      集成国际化能力
      常见问题
      依赖安装问题
      命令行问题
      构建相关问题
      热更新问题
      已下线功能
      📝 编辑此页面
      上一页React Compiler下一页浏览器兼容性

      #提升构建性能

      Modern.js 默认对构建性能进行了充分优化,但是随着业务场景变复杂、项目代码量变大,你可能会遇到一些构建性能的问题。

      本文档提供了一些可选的提速策略,开发者可以根据实际场景选取其中的部分策略,从而进一步提升构建速度。

      📢 注意

      在优化产物体积一文中介绍的策略也可以用于提升构建性能,这里不再重复介绍。

      #通用优化策略

      以下是一些通用的优化策略,对开发环境和生产环境均有提速效果,其中部分策略对包体积也有优化。

      #使用 Rspack 构建(推荐)

      如果你还未使用 Rspack 构建,可以切换到 Rspack 构建模式来提升 5~10 倍的构建速度,请参考 使用 Rspack 来进行切换。

      #升级 Node.js 版本

      通常来说,将 Node.js 更新到最新的 LTS 版本,有助于提升构建性能。

      尤其是对于 Apple M1/M2 芯片的机型,推荐使用 Node 18 进行构建。

      Node >= 16 默认提供了 Apple Silicon binaries,因此在 M1/M2 机型上性能会比 Node 14 有大幅度提升。根据我们的测试,从 Node 14 切换到 Node >= 16 后,编译速度可以提升 100% 以上。

      你可以通过以下步骤来切换到 Node 18:

      # 安装 Node v18
      nvm install 18
      
      # 切换到 Node 18
      nvm use 18
      
      # 将 Node 18 设置为默认版本
      nvm default 18
      
      # 查看 Node 版本
      node -v

      #开发环境优化策略

      以下是针对开发环境进行提速的策略。

      #调整 Source Map 格式

      为了提供良好的调试体验,Modern.js 在开发环境下默认使用 cheap-module-source-map 格式 Source Map,这是一种高质量的 Source Map 格式,会带来一定的性能开销。

      你可以通过调整开发环境的 Source Map 格式来提升构建速度。

      比如禁用 Source Map:

      export default {
        tools: {
          bundlerChain(chain, { env }) {
            if (env === 'development') {
              chain.devtool(false);
            }
          },
        },
      };

      或是把开发环境的 Source Map 格式设置为开销最小的 eval 格式:

      export default {
        tools: {
          bundlerChain(chain, { env }) {
            if (env === 'development') {
              chain.devtool('eval');
            }
          },
        },
      };

      关于不同 Source Map 格式之间的详细差异,请查看 webpack - devtool。

      #调整 Browserslist 范围

      这项优化的原理与「提升 Browserslist 范围」类似,区别在于,我们可以为开发环境和生产环境设置不同的 browserslist,从而减少开发环境下的编译开销。

      比如,你可以在 package.json 中添加以下配置,表示在开发环境下只兼容最新的浏览器,在生产环境下兼容实际需要的浏览器:

      {
        "browserslist": {
          "production": [">0.2%", "not dead", "not op_mini all"],
          "development": [
            "last 1 chrome version",
            "last 1 firefox version",
            "last 1 safari version"
          ]
        }
      }

      注意,这项优化策略会导致开发环境与生产环境的构建产物存在一定差异。

      #生产环境优化策略

      以下是针对生产环境进行提速的策略。

      #禁用 Source Map

      如果项目在生产环境下不需要 Source Map,可以通过 sourceMap 配置项关闭,从而提升 build 构建的速度。

      export default {
        output: {
          sourceMap: false,
        },
      };

      详见 output.sourceMap。