代码之家  ›  专栏  ›  技术社区  ›  Willem van der Veen

反应,用Webpack创建最佳生产包

  •  5
  • Willem van der Veen  · 技术社区  · 6 年前

    今天,我深入探讨了Webpack的内部结构,并设法使用了它的许多有用功能(通过Webpack加载程序),例如 CSS 模块和Babel蒸腾器。我想用这个做一个反应应用(没有 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应用程序的增长,将捆绑包分成多个块,以便更快地下载(这是正确的术语,对吗?).

    问题:

    1. 在将应用程序拆分为多个块时,需要考虑哪些方面?
    2. 如何将应用程序拆分为多个块?我只需要输入多个入口点吗(如果是这样,那么什么是战术入口点?)?
    1 回复  |  直到 6 年前
        1
  •  3
  •   Nishant    6 年前

    你不需要有多个入口点。

    你可以根据

    • 路线
    • 最大尺寸 块的
    • 有单独的块用于 外部依赖
    • 使用 动态导入 对于任何有意义的模块

    如果不确定要使用的参数,请将默认值与Webpack的SplitChunk插件一起使用。( https://webpack.js.org/plugins/split-chunks-plugin/ )

    然后,您可以尝试自己的定制,以找出最适合您的应用程序的方法。