You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite-based React项目中Profiler组件启用/禁用的推荐方案问询

在Vite React项目中启用/禁用组件的推荐方案

核心背景

React官方明确:<Profiler>会产生额外性能开销,默认在生产构建中禁用,若要在生产环境使用,必须构建支持Profiling的特殊生产包。

你提到的两种Vite配置方案的有效性

这两种配置方式都是可行且推荐的,本质都是通过别名替换,让项目引入带Profiling支持的React DOM和调度器版本:

方案1:显式配置别名(TypeScript版)

在vite.config.ts中直接指定别名指向Profiling相关模块:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      'react-dom$': 'react-dom/profiling',
      'scheduler/tracing': 'scheduler/tracing-profiling',
    },
  },
});

方案2:正则匹配配置别名(JavaScript版)

在vite.config.js中用正则匹配实现别名替换:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: [
      {
        find: /react-dom$/,
        replacement: 'react-dom/profiling',
      },
      {
        find: /scheduler\/tracing$/,
        replacement: 'scheduler/tracing-profiling',
      },
    ],
  },
});

其他实现方式

除了上述两种别名配置,还有一种更灵活的方式:

  • 环境变量按需启用:结合Vite的多模式构建,只在需要Profiling的场景下启用别名,避免日常生产构建的性能损耗。示例配置如下:
    export default defineConfig(({ mode }) => {
      const alias = {};
      // 自定义一个production-profiling模式,仅该模式下启用Profiling
      if (mode === 'production-profiling') {
        alias['react-dom$'] = 'react-dom/profiling';
        alias['scheduler/tracing'] = 'scheduler/tracing-profiling';
      }
      return {
        plugins: [react()],
        resolve: { alias },
      };
    });
    
    使用时通过vite build --mode production-profiling触发带Profiling的构建,日常生产构建仍用默认的vite build即可。

禁用Profiler的注意事项

如果不需要Profiling能力,无需额外配置,Vite默认会使用不带Profiling的React DOM版本,只需移除或注释代码中的<Profiler>组件即可,避免不必要的性能开销。

内容的提问来源于stack exchange,提问作者Konrad Jamrozik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:39:52