如何在React应用程序中使用webpackasynchronous需要模块?

在React应用程序中,我想导入一个名为flowtime.js的库,仅用于特定的path/path,然后执行更多的代码。 这个库有一个名为Brav1toolbox的依赖 。 在npm上都不可用。

我的策略是在Component的componentDidMount方法中使用webpack的require 。 这是我的尝试:

 componentDidMount() { require.ensure([ 'local/relative/path/to/lib/brav1toolbox.js'], function(require) { var f = require('local/relative/path/to/other/lib/Flowtime.js/js/flowtime.js'); }); } 

这会导致以下错误。

Uncaught(承诺)ReferenceError:Brav1Toolbox未定义

所以Flowtime正在加载,但无法findBrav1Toolbox。

我没有React或webpack的经验,所以也许我有一个误解。 我正在尝试使用webpack来只加载这些库,如果我的用户访问需要这些库的path。 这是我用作参考的webpack指南 。

感谢您的帮助。

这取决于你的webpack版本,但你正在与代码分割/路由组块的正确轨道。

对于webpack v2,我build议查看Webpack文档 。

使用webpack 2,您可以在反应容器/组件所需的库中需要它们,然后根据pathdynamic加载代码。 下面是一个例子,说明如何使用react-router通过两个示例路由(例如“/ home”和“/ about”)来做到这一点。

 <Route path="/home" getComponent={(nextState, callback) => { require.ensure([], require => { callback(null, require("./containers/home")); }, "Home"); }} /> <Route path="/about" getComponent={(nextState, callback) => { require.ensure([], require => { callback(null, require("./containers/about")); }, "About"); }} />