最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react項(xiàng)目?jī)?yōu)化配置的操作詳解

 更新時(shí)間:2022年06月12日 08:02:18   作者:船長(zhǎng)在船上  
這篇文章主要介紹了react項(xiàng)目?jī)?yōu)化配置,主要包括優(yōu)化配置CDN,優(yōu)化路由懶加載,結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

優(yōu)化-配置CDN

通過(guò) craco 來(lái)修改 webpack 配置,從而實(shí)現(xiàn) CDN 優(yōu)化

 yarn add  @craco/craco
//或者
 npm install  @craco/craco --save

在項(xiàng)目 根目錄新建craco.config.js文件

// 添加自定義對(duì)于webpack的配置
const path = require('path')
const { whenProd, getPlugin, pluginByName } = require('@craco/craco')
module.exports = {
  // webpack 配置
  webpack: {
    // 配置別名
    alias: {
      // 約定:使用 @ 表示 src 文件所在路徑
      '@': path.resolve(__dirname, 'src')
    },
    // 配置webpack
    // 配置CDN
    configure: (webpackConfig) => {
      // webpackConfig自動(dòng)注入的webpack配置對(duì)象
      // 可以在這個(gè)函數(shù)中對(duì)它進(jìn)行詳細(xì)的自定義配置
      // 只要最后return出去就行
      let cdn = {
        js: [],
        css: []
      }
      // 只有生產(chǎn)環(huán)境才配置
      whenProd(() => {
        // key:需要不參與打包的具體的包
        // value: cdn文件中 掛載于全局的變量名稱 為了替換之前在開(kāi)發(fā)環(huán)境下
        // 通過(guò)import 導(dǎo)入的 react / react-dom
        webpackConfig.externals = {
          react: 'React',
          'react-dom': 'ReactDOM'
        }
        // 配置現(xiàn)成的cdn 資源數(shù)組 現(xiàn)在是公共為了測(cè)試
        // 實(shí)際開(kāi)發(fā)的時(shí)候 用公司自己花錢買的cdn服務(wù)器
        cdn = {
          js: [
            'https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0/umd/react.production.min.js',
            'https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0/umd/react-dom.production.min.js',
          ],
          css: []
        }
      })
      // 都是為了將來(lái)配置 htmlWebpackPlugin插件 將來(lái)在public/index.html注入
      // cdn資源數(shù)組時(shí) 準(zhǔn)備好的一些現(xiàn)成的資源
      const { isFound, match } = getPlugin(
        webpackConfig,
        pluginByName('HtmlWebpackPlugin')
      )
      if (isFound) {
        // 找到了HtmlWebpackPlugin的插件
        match.userOptions.cdn = cdn
      }
      return webpackConfig
    }
  }
}

public/index.html 

<body>
  <div id="root"></div>
  <!-- 加載第三發(fā)包的 CDN 鏈接 -->
  <% htmlWebpackPlugin.userOptions.cdn.js.forEach(cdnURL => { %>
    <script src="<%= cdnURL %>"></script>
  <% }) %>
</body>

優(yōu)化-路由懶加載 

使用步驟

  • 在 App 組件中,導(dǎo)入 Suspense 組件
  • 在 路由Router 內(nèi)部,使用 Suspense 組件包裹組件內(nèi)容
  • 為 Suspense 組件提供 fallback 屬性,指定 loading 占位內(nèi)容
  • 導(dǎo)入 lazy 函數(shù),并修改為懶加載方式導(dǎo)入路由組件

代碼實(shí)現(xiàn)

App.js

import { Routes, Route } from 'react-router-dom'
import { HistoryRouter, history } from './utils/history'
import { AuthRoute } from './components/AuthRoute'
 
// 導(dǎo)入必要組件
import { lazy, Suspense } from 'react'
// 按需導(dǎo)入路由組件
const Login = lazy(() => import('./pages/Login'))
const Layout = lazy(() => import('./pages/Layout'))
const Home = lazy(() => import('./pages/Home'))
const Article = lazy(() => import('./pages/Article'))
const Publish = lazy(() => import('./pages/Publish'))
 
function App () {
  return (
    <HistoryRouter history={history}>
      <Suspense
        fallback={
          <div
            style={{
              textAlign: 'center',
              marginTop: 200
            }}
          >
            loading...
          </div>
        }
      >
        <Routes>
          {/* 需要鑒權(quán)的路由 */}
          <Route path="/" element={
            <AuthRoute>
              <Layout />
            </AuthRoute>
          }>
            {/* 二級(jí)路由默認(rèn)頁(yè)面 */}
            <Route index element={<Home />} />
            <Route path="article" element={<Article />} />
            <Route path="publish" element={<Publish />} />
          </Route>
          {/* 不需要鑒權(quán)的路由 */}
          <Route path='/login' element={<Login />} />
        </Routes>
      </Suspense>
    </HistoryRouter>
  )
}
export default App

查看效果

我們可以在打包之后,通過(guò)切換路由,監(jiān)控network面板資源的請(qǐng)求情況,驗(yàn)證是否分隔成功

到此這篇關(guān)于react項(xiàng)目?jī)?yōu)化配置的文章就介紹到這了,更多相關(guān)react項(xiàng)目配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 字節(jié)封裝React組件手機(jī)號(hào)自動(dòng)校驗(yàn)格式FormItem

    字節(jié)封裝React組件手機(jī)號(hào)自動(dòng)校驗(yàn)格式FormItem

    這篇文章主要為大家介紹了字節(jié)封裝React組件手機(jī)號(hào)自動(dòng)校驗(yàn)格式FormItem,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • React中設(shè)置樣式style方式

    React中設(shè)置樣式style方式

    這篇文章主要介紹了React中設(shè)置樣式style方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 在React中使用React.createRef:更優(yōu)雅的DOM引用方式

    在React中使用React.createRef:更優(yōu)雅的DOM引用方式

    React提供了多種方式來(lái)引用DOM元素,其中React.createRef()是一種更為現(xiàn)代、更優(yōu)雅的方式,在這篇文章中,我們將深入了解React.createRef()的應(yīng)用,以及它為開(kāi)發(fā)者帶來(lái)的便利,感興趣的朋友一起看看吧
    2024-01-01
  • react使用useImperativeHandle示例詳解

    react使用useImperativeHandle示例詳解

    這篇文章主要為大家介紹了react使用useImperativeHandle示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • React?中使用?Redux?的?4?種寫法小結(jié)

    React?中使用?Redux?的?4?種寫法小結(jié)

    這篇文章主要介紹了在?React?中使用?Redux?的?4?種寫法,Redux 一般來(lái)說(shuō)并不是必須的,只有在項(xiàng)目比較復(fù)雜的時(shí)候,比如多個(gè)分散在不同地方的組件使用同一個(gè)狀態(tài),本文就React使用?Redux的相關(guān)知識(shí)給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-06-06
  • 使用useMutation和React Query發(fā)布數(shù)據(jù)demo

    使用useMutation和React Query發(fā)布數(shù)據(jù)demo

    這篇文章主要為大家介紹了使用useMutation和React Query發(fā)布數(shù)據(jù)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 使用reactjs優(yōu)化了進(jìn)度條頁(yè)面性能提高70%

    使用reactjs優(yōu)化了進(jìn)度條頁(yè)面性能提高70%

    這篇文章主要介紹了使用reactjs優(yōu)化了進(jìn)度條后頁(yè)面性能提高了70%的操作技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 使用 React Router Dom 實(shí)現(xiàn)路由導(dǎo)航的詳細(xì)過(guò)程

    使用 React Router Dom 實(shí)現(xiàn)路由導(dǎo)航的詳細(xì)過(guò)程

    React Router Dom 是 React 應(yīng)用程序中用于處理路由的常用庫(kù),它提供了一系列組件和 API 來(lái)管理應(yīng)用程序的路由,這篇文章主要介紹了使用 React Router Dom 實(shí)現(xiàn)路由導(dǎo)航,需要的朋友可以參考下
    2024-03-03
  • React改變?cè)貥邮降牟僮鞔a

    React改變?cè)貥邮降牟僮鞔a

    這篇文章主要介紹了React技巧之改變?cè)貥邮?本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Suspense對(duì)React的意義及作用解析

    Suspense對(duì)React的意義及作用解析

    這篇文章主要為大家介紹了Suspense對(duì)React的意義及作用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論

长垣县| 嘉定区| 陈巴尔虎旗| 吉林市| 卓尼县| 象州县| 鹤峰县| 固阳县| 石楼县| 杂多县| 修水县| 察隅县| 莱芜市| 内乡县| 嘉祥县| 文成县| 酒泉市| 中江县| 乡城县| 建昌县| 镇康县| 滁州市| 杨浦区| 高唐县| 亚东县| 福泉市| 垦利县| 九龙坡区| 岳普湖县| 云南省| 烟台市| 天全县| 宽甸| 福州市| 吉安市| 台东县| 甘孜| 临漳县| 三河市| 新沂市| 台江县|