当前位置:首页 > React

umi是如何暴露react

2026-03-31 13:37:17React

umi 暴露 React 的方式

umi 通过配置 runtimePublicPathchainWebpack 来暴露 React 及其相关库到全局作用域。这样可以避免多个 React 实例共存,确保项目依赖的 React 版本一致。

配置 runtimePublicPath

config/config.js.umirc.js 中设置 runtimePublicPathtrue,确保动态加载的脚本能正确解析 React 路径。

export default {
  runtimePublicPath: true,
};

通过 chainWebpack 配置

在配置文件中使用 chainWebpack 方法,将 React 和 ReactDOM 暴露为全局变量。

export default {
  chainWebpack(config) {
    config.externals({
      'react': 'window.React',
      'react-dom': 'window.ReactDOM',
    });
  },
};

引入 CDN 资源

在 HTML 中通过 <script> 标签引入 React 和 ReactDOM 的 CDN 资源,确保全局变量可用。

<script crossorigin src="https://unpkg.com/react@17/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>

使用 webpack 的 ProvidePlugin

通过 chainWebpack 配置 ProvidePlugin,自动注入 React 到模块中。

export default {
  chainWebpack(config) {
    config.plugin('provide').use(webpack.ProvidePlugin, [{
      React: 'react',
    }]);
  },
};

检查依赖版本

确保项目中的 React 版本与 CDN 引入的版本一致,避免版本冲突。

umi是如何暴露react

npm ls react

注意事项

  • 避免在项目中直接安装 React 和 ReactDOM,防止多实例问题。
  • 确保 CDN 资源加载顺序正确,ReactDOM 依赖 React 必须先行加载。
  • 在生产环境中使用稳定的 CDN 地址,避免资源加载失败。

通过以上方法,umi 可以有效地将 React 暴露到全局作用域,确保项目正常运行。

标签: umireact
分享给朋友:

相关文章

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

如何配置react

如何配置react

配置React项目的步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过官网下载并安装最新版本。安装完成后,运行以下命令验证版本: node -v npm -v 创建…

react如何清理

react如何清理

清理 React 项目的方法 清理未使用的依赖项 运行 npm prune 或 yarn install --production 可以移除 node_modules 中未在 package.json…

如何读react源码

如何读react源码

理解React源码的结构 React源码托管在GitHub上,主要分为几个核心模块:react、react-dom、react-reconciler等。react包包含核心API和组件逻辑,react…

react路由如何配置

react路由如何配置

React 路由配置方法 安装 React Router 使用 npm 或 yarn 安装 React Router 的 DOM 版本: npm install react-router-dom #…

react项目如何启动

react项目如何启动

启动React项目的步骤 确保已安装Node.js(建议版本12以上)和npm/yarn。可通过以下命令检查版本: node -v npm -v 全局安装create-react-app脚手架工具(…