空缩小的React app,为什么它已经变大了?

问题描述 投票:1回答:2

我创建了一个非常基本的应用程序,它只从url加载json然后显示它。没有可以分割的块,事情变得微不足道,但我仍然得到消息:

“资产大小限制中的警告:以下资产超过建议的大小限制(244 KiB)。这可能会影响Web性能。资产:output_react.js(245 KiB)”。

模式生产开启(脚本缩小,开发期间超过1mb),app基本上没有做任何事情,webpack已经报告它太大了?为什么?我该如何解决这个问题? (style.scss也是空的,只有150个字符)。

我的代码:App.js

import React, {Component} from 'react';
require('../styles/style.scss');

class App extends Component {
  constructor(){
    super();
    this.state = {
      orders : []
    }

      this.getOrders();
  }
  getOrders (){
    fetch('http://localhost/supplier/get_orders.php')
    .then(results =>{
      return results.json();
    }).then(data =>{
      let orders = data.orders.map((order) => {
        return( 
          <div key={order.order_index} className={order.status}>
            {order.sizes}
          </div>
        )
      })
      this.setState({orders: orders})
    })
  }
  render() {
    return  <div className="orders_container">{this.state.orders}</div> ;
  }
}

export default App;

我的webpack.config.js:

const webpack = require('webpack')
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    entry: './src/index.js',
    output: {
        path: path.join(__dirname, '/dist'),
        filename: 'output_react.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: [/node_modules/, /git/],
                use: {
                    loader: 'babel-loader'
                }
      },
            {
                test: /\.scss$/,
                exclude: /git/,
                use: [
                "style-loader", // creates style nodes from JS strings
                "css-loader", // translates CSS into CommonJS
                "sass-loader" // compiles Sass to CSS, using Node Sass by default
            ]
        },
            {
                test: /\.css$/,
                exclude: /git/,
                use: [
                  "style-loader", // creates style nodes from JS strings
                  "css-loader" // translates CSS into CommonJS
              ]
          }
    ]
    },
    plugins: [
    new HtmlWebpackPlugin({
            template: './src/index.html'
        })
  ],
    watch: true
}
javascript reactjs webpack size bundle
2个回答
0
投票

好吧,你必须将min文件分成块。只需根据路由进行延迟加载并将其划分为块。


0
投票

谢谢@hazardous。我已经完成了stats.json,这就是webpack-bundle-analyzer显示的内容:webpack-bundle-analyser result

所以似乎引导程序就是问题所在。我实际上认为这可能是原因,所以我只删除了导入'bootstrap / dist / css / bootstrap.min.css';来自我的index.js,这只减小了40kb的大小。

但是现在(一旦我看到引导程序确实是问题)我也从生产依赖项中删除了引导程序(在npm的package.json中) - 之后它就像一个魅力,“仅”100kb的bundle.js,考虑到它包括所有的React,这是可以的。

非常感谢@hazardous,你的答案解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.