create-react-app 按需加載以及部署

閑來無事,就想著把前幾天折騰的問題重新梳理一遍,加深印象.
上面一篇文章有提到升級ejectcra項目.為什么升級這個項目,就是想要折騰,就是想要使用到webpack2,還有一個好處是加深對create-react-app的理解.壞處不言而喻,折騰浪費生命浪費時間.

按需加載

  • AsyncComponent.js
import React, { Component } from "react";

export default function asyncComponent(importComponent) {
    class AsyncComponent extends Component {
        constructor(props) {
            super(props);

            this.state = {
                component: null
            };
        }

        async componentDidMount() {
            const { default: component } = await importComponent();

            this.setState({
                component: component
            });
        }

        render() {
            const Component = this.state.component;

            return Component ? <Component {...this.props} /> : null;
        }
    }

    return AsyncComponent;
}

這個是異步加載組件的方法.到時在需要的組件上加入引用就好.例如在路由里.

  • Menu.js
const AsyncUser = asyncComponent(() => import("./User"));
...
<Route path="/users" component={AsyncUser}/>

部署(nginx以及npm2)

  • nginx

    • 準備工作
        npm run build
    
    • sudo vim /etc/nginx/sites-enabled/react-app.conf
       server {
           listen 7878;
           server_name 127.0.0.1;
           root /home/deploy/workspace/project/build;
           location / {
               try_files $uri /index.html;
               add_header   Cache-Control no-cache;
               #expires      1d;
           }
       }
    
    • 啟用nginx配置
        sudo service nginx reload
        sudo service nginx restart
    
    • 注意
      如果是阿里云服務器,可能訪問失敗,阿里云的安全策略默認是只開啟了80端口,首先去實例里檢測其他的端口是否開放.
  • pm2

    • installl and start

          sudo npm install pm2 -g
          pm2 start npm -- start
      
    • nginx

        # sudo vim /etc/nginx/sites-available/react-app.conf
        server{
              listen 80 default_server;
              server_name YOUR-SERVER-NAME;
              location / {
                proxy_pass http://localhost:3000; #or any port number here
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
              }
        }
      
    • restart

       sudo service nginx reload
       sudo service nginx restart
      
    
    

參考

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • nginx在工作中已經有好幾個環(huán)境在使用了,每次都是重新去網上扒博客,各種編譯配置,今天自己也整理一份安裝文檔和n...
    AndyChin閱讀 2,391評論 0 4
  • =========================================================...
    lavor閱讀 3,640評論 0 5
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 33,018評論 24 1,002
  • 解壓縮工具The Unarchive[https://theunarchiver.com/] 視頻播放器IINA[...
    Carve_Time閱讀 617評論 0 3

友情鏈接更多精彩內容