gpt4 book ai didi

reactjs - 使用动态模块进行代码分割?

转载 作者:行者123 更新时间:2023-12-03 13:22:37 25 4
gpt4 key购买 nike

我在 React 中使用 Webpack 的代码分割功能。我正在构建一个应用程序,用户将在其中选择一个选项,然后将呈现相应的 React 组件。但是,我发现使用 CommonJs require.ensure 仅适用于硬编码字符串。当我使用变量时,它似乎正在工作,组件会关闭。但是当我查看网络选项卡时,我发现它没有拆分代码 - 它没有加载任何新的包。当我进行硬编码时,每次都会调用一个新的包。

这是有效的:

executeDynamic(component){
var that = this;
switch(component){
case 'SolidButton':
require.ensure([], function(require){
DynamicModule = require(`./elements/SolidButton/index.js`);
that.forceUpdate();
});
break;
case 'ThreeDButton':
require.ensure([], function(require){
DynamicModule = require(`./elements/ThreeDButton/index.js`);
that.forceUpdate();
});
break;
case 'NoPreview':
require.ensure([], function(require){
DynamicModule = require(`./elements/NoPreview/index.js`);
that.forceUpdate();
});
break;
default:
break;
}
}

这是我想要的工作:

executeDynamic(component){
var that = this;
require.ensure([], function(require) {
DynamicModule = require(`./elements/${component}/index.js`);
that.forceUpdate();
});
}

最佳答案

我终于明白了!!我将动态 require 移至其自己的文件中,因此下面是我从 React 组件对该文件的调用,然后是文件的内容。您需要bundle-loader安装软件包来执行此操作。

所以这就是我进行调用的地方,传入 this 以及我想要加载的组件的名称。

loadLiveCode(that, component) {
req(component, function(result) {
DynamicModule = result;
that.forceUpdate();
});
}

还有动态Require.js 文件,它保存了利用bundle-loader 的动态require 调用:

module.exports = function loadAsync(expr, callback) {
var bundledResult = require("bundle!./elements/" + expr + "/index.js");
bundledResult(function(result) {
callback(result);
});
};

关于reactjs - 使用动态模块进行代码分割?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39602389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com