我可以将 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 加载器。
假设我有一个包含多个标签的网站,使用 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 加载器。