当前位置: 首页 > 知识库问答 >
问题:

使用create-react-app时,代码拆分会增加条目包大小

傅穆冉
2023-03-14

以下是手动代码拆分前的相关代码:

import React from 'react';
import {BrowserRouter, Switch, Route} from 'react-router-dom';
import Protected from '../container-components/authentication/protected.js';
import LoginContainer from '../container-components/authentication/loginContainer.js';
import axios from 'axios';
import {Loader} from 'semantic-ui-react';

  render(){
    if(this.state.isLoading){
      return(
        <div>
          <Loader style={{marginTop: '30vh'}} active inline='centered'/>
        </div>
      )
    }
    return(
        <BrowserRouter>
            <div>
              <Switch>
                <Route
                  path='/stream'
                  render={(props) =>
                    <Protected {...props}
                    isLoggedIn={this.state.isLoggedIn}
                    onLogout={this.handleLogout}
                    user={this.state.user}
                    />
                  }
                />
                <Route
                  path='*'
                  render={(props) =>
                    <LoginContainer {...props}
                      isLoggedIn={this.state.isLoggedIn}
                      onLogin={this.handleLogin}
                    />
                  }
                />
              </Switch>
            </div>
        </BrowserRouter>
    )

以下是代码拆分后的代码:

import React from 'react';
import {BrowserRouter, Switch, Route} from 'react-router-dom';
import LoginContainer from '../container-components/authentication/loginContainer.js';
import axios from 'axios';
import {Loader} from 'semantic-ui-react';
import Loadable from 'react-loadable';

const LoadableProtected = Loadable({
  loader: () => import('../container-components/authentication/protected.js'),
  loading: Loader,
  render(loaded, props) {
    let Component = loaded.default;
    return <Component {...props} />
  }
})

  render(){
    if(this.state.isLoading){
      return(
        <div>
          <Loader style={{marginTop: '30vh'}} active inline='centered'/>
        </div>
      )
    }
    return(
        <BrowserRouter>
            <div>
              <Switch>
                <Route
                  path='/stream'
                  render={(props) =>
                    <LoadableProtected {...props}
                      isLoggedIn={this.state.isLoggedIn}
                      onLogout={this.handleLogout}
                      user={this.state.user}
                    />
                  }
                />
                <Route
                  path='*'
                  render={(props) =>
                    <LoginContainer {...props}
                      isLoggedIn={this.state.isLoggedIn}
                      onLogin={this.handleLogin}
                    />
                  }
                />
              </Switch>
            </div>
        </BrowserRouter>
    )
  }

我也在这里尝试了教程:https://serverless-stack.com/chapters/code-splitting-in-create-react-app.html

这似乎和react loadable所做的是一样的。

我正在使用webpack v4和弹出的create react应用程序以及以下babel软件包/插件:

“@babel/cli”:“^7.2.0”@babel/plugin提案类属性”:“^7.2.1”@babel/plugin提案导出默认自“^7.2.0”@babel/preset env”:“^7.2.0”acorn“^6.0.4”babel eslint“^9.0.0”babel插件动态导入节点“^2.2.0”babel插件lodash“^3.3”babel核心“^6.26.3”、“babel jest”:“20.0.3”、“babel加载程序”:“^8.0.4”,“巴别塔预设反应应用程序”:“^6.1.0”,“巴别塔运行时”:“*”,

这不是什么大不了的事情,它没有减少捆绑包的大小,我只是似乎不明白为什么会这样。

共有1个答案

羊舌琛
2023-03-14

也许你可以试试TerserPLugin,最小化JS?

  optimization: {
    minimizer: [new TerserPlugin({ /* additional options here */ })],
  },

资料来源:https://github.com/webpack-contrib/terser-webpack-plugin

 类似资料:
  • 问题内容: Node通过传递命令行标志来增加堆大小。在create-react-app项目中,一切都取决于react- scripts的使用。如何在此类项目中传递此参数,我最好在哪里进行? 谢谢你的帮助。 问题答案: 非常感谢@ dan-abramov,因为他的评论是答案!(以防万一,请给他投票)。 你可以把例如在那里,而不是

  • 问题内容: 我有一个关于webpack的基本问题,可以做出反应(可以在代码混淆/丑化周围)使用帮助。 我正在为我的应用程序使用它,它似乎为生产创建了捆绑的版本(运行之后)。 在该文件中,似乎所有内容都放入了main.JS文件和main.CSS文件等中,我使用“ firebase deploy”(在我的情况下)进行了实时推送。我希望我的代码被丑化,并且那里的任何开发人员都不能完全阅读。 但是,当我在

  • 创建响应应用时,图像中出现错误。它一直在正常工作,我所做的就是mkdir和cd到那个dir。 这就是错误的样子... NPX:在36.634s中安装了99必须使用导入来加载ES模块: C:\用户\Neeraj\AppData\漫游\npm-cache_npx\5172\node_modules\create-react-app\node_modules\is-promise\index.js不支持

  • Create React App 不用配置就可以创建 React App。 全局安装: npm install -g create-react-app 创建 App: create-react-app my-appcd my-app/ 启动 npm: npm start 打开 http://localhost:3000/  查看你的 App。 如果你准备将其部署到生产环境,只需创建一个压缩包,并且运行 npm run build。

  • ~$npm create-react-app my-app 安装软件包。这可能需要几分钟。使用cra-template安装react、react-dom和react-scripts... core-js@2.6.11 postinstall/home/ubuntu/my-app/node_modules/babel-runtime/node_modules/core-js node-e“try{r

  • Create React Native App The fastest way to create universal React Native apps npx create-react-native-app Once you're up and running with Create React Native App, visit this tutorial for more informat