【发布时间】:2019-01-01 06:30:15
【问题描述】:
今天我深入研究了 Webpack 的内部结构,并设法使用了许多有用的功能(通过 Webpack 加载器),例如 CSS 模块和 Babel 转译器。我想用它来制作一个 React 应用程序(没有create-react-app)。
这是我的配置文件:
const HtmlWebPackPlugin = require("html-webpack-plugin");
const path = require('path');
module.exports = {
entry: {
main: './src/index.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
module: {
rules: [
{
test: /\.js|jsx$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.html$/,
exclude: /node_modules/,
use: [
{
loader: "html-loader",
options: { minimize: true }
}
]
},
{
test: /\.css$/,
exclude: /node_modules/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
query: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
}
]
}
]
},
plugins: [
new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "index.html"
})
]
};
因为我现在有一个入口点,所以我的整个包被转换为一个 JS 文件。但是,随着我的 react 应用程序的增长,最好将捆绑包分成多个块,以便更快地下载它们(这是正确的术语,对吗?)。
问题:
- 将应用程序拆分为多个块时需要考虑哪些方面?
- 如何将应用程序拆分为多个块?我是否只输入多个入口点(如果是这种情况,那么什么是战术入口点?)?
【问题讨论】:
-
嘿@WillemvanderVeen!你确定你需要把你的包分成多个块吗?因为大多数时候你不需要。我认为您需要回答的第一个问题是
Do I really need to split my bundle?如果您真的需要拆分捆绑包,那么您可以为每个根创建一个捆绑包:) -
我不确定您是否需要将捆绑包分成多个块。但是我在其他地方看到过。例如,一个 Angular 应用程序是一个带有多个包的 HTML 文件
-
是的,拥有多个捆绑包是很常见的事情。但你为什么要这样做?你的应用加载速度很慢吗?如果您真的需要或想要,IMO 最好的方法是每个根都有一个捆绑包。
标签: javascript reactjs webpack webpack-4