我可以将 react.js 个应用捆绑到多个模块中吗?

Can I bundle react.js apps into multiple modules?

假设我有一个包含多个标签的网站,使用 react.js 构建,每个标签都包含大量数据。通常 webpack 将 react 应用程序打包成一个包,但如果你从不访问其中一个选项卡,这将是一种资源浪费。是否可以将它分成单独的包而不必重新捆绑反应核心和反应 DOM,然后根据要求调用这些额外的静态模块?

我愿意接受不同的建议 - webpack、systemjs 等

首先,检查您的体系结构并确保您确实需要它。考虑到只有 "infrastructure" 是捆绑包的一部分并且 所有数据 在需要时通过 Ajax 下载的典型场景,这是不太可能的(并非不可能)当您 properly take care of optimization.

时,您最终会得到一个特别大的捆绑包

回到你的问题...

请记住,这可能不是在公园散步。根据我的经验,当你试图做一些偏离虚线的事情时,问题就会开始出现。您可能在服务器渲染、redux 或其他方面遇到问题。

无论如何,你有两个选择:

1) 使用多页面应用配置

Webpack 将输出多个 "chunks",你将其配置为具有多个入口点,如下所示:

module.exports = {
    entry: {
        p1: "./page1",
        p2: "./page2",
        p3: "./page3"
    },
    output: {
        filename: "[name].entry.chunk.js"
    }
}

你甚至可以拥有 "common chunks"。 Take a look here.

2) 使用代码拆分

有一个名为 bundle-loader that offers a lazy option that allows modules to be actually downloaded as they are needed. I came across this loader when I was reading the React-Router 4 documentation. They even provide an example which doesn't require the router at all, check it here 的 Webpack 加载器。