欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

react實(shí)現(xiàn)頁(yè)面代碼分割、按需加載的方法

雖然一直有做 react 相關(guān)的優(yōu)化,按需加載、dll 分離、服務(wù)端渲染,但是從來(lái)沒(méi)有從路由代碼分割這一塊入手過(guò),昨天在本地開(kāi)發(fā)時(shí)沒(méi)有測(cè)試成功,今天又搞了下,已經(jīng)部署到線上環(huán)境了,今天就這個(gè)記錄一下。

成都創(chuàng)新互聯(lián)公司10多年企業(yè)網(wǎng)站設(shè)計(jì)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站設(shè)計(jì)及推廣,對(duì)成都衛(wèi)生間隔斷等多個(gè)領(lǐng)域擁有豐富的網(wǎng)站營(yíng)銷經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

修改配置

開(kāi)發(fā)環(huán)境:webpack@v3 、react-router@v4

安裝依賴:

$ yarn add babel-plugin-syntax-dynamic-import -dev

修改 .babelrc 文件:在 plugins 中添加 "syntax-dynamic-import"

改造項(xiàng)目代碼

安裝依賴:

$ yarn add react-loadable

根據(jù) react-loadable 文檔提示,我們需要提供一個(gè)載入新頁(yè)面時(shí)的 Loading 組件,同時(shí)對(duì)加載和超時(shí)狀態(tài)進(jìn)行區(qū)別提示:

import React from 'react';
import { Icon } from 'antd';

const Loading = ({ pastDelay, timedOut, error }) => {
 if (pastDelay) {
 return <div><Icon type="loading" /></div>;
 } else if (timedOut) {
 return <div>Taking a long time...</div>;
 } else if (error) {
 return <div>Error!</div>;
 }
 return null;
};

更改頁(yè)面組件導(dǎo)入方法:

import React from 'react';
import Loadable from 'react-loadable';
import { Route, Switch } from 'react-router-dom';

const Home = Loadable({
 loader: () => import('../Home'),
 loading: Loading,
 timeout: 10000
});
const EditArticle = Loadable({
 loader: () => import('../EditArticle'),
 loading: Loading,
 timeout: 10000
});

...

<Switch>
 <Route exact path="/home" component={Home} />
 <Route path="/editarticle" component={EditArticle} />
</Switch>

然后打包結(jié)果就會(huì)分離出各頁(yè)面代碼:

react 實(shí)現(xiàn)頁(yè)面代碼分割、按需加載的方法

在頁(yè)面中我們只需要載入入口文件 app.js ,其他腳本在訪問(wèn)到對(duì)應(yīng)頁(yè)面時(shí)都會(huì)經(jīng)由這個(gè)文件載入。

驗(yàn)證結(jié)果

在將靜態(tài)資源上傳到 cdn 之后,在頁(yè)面中加載 app.css 和 app.js ,運(yùn)行之后訪問(wèn)各個(gè)頁(yè)面就會(huì)依次加載對(duì)應(yīng)腳本,結(jié)果如圖:

react 實(shí)現(xiàn)頁(yè)面代碼分割、按需加載的方法

可以看到,在訪問(wèn)第一個(gè)頁(yè)面時(shí)加載的頁(yè)面腳本經(jīng) gzip 壓縮后僅有 21.8KB ?。?!當(dāng)然這與頁(yè)面復(fù)雜度也有關(guān),但是相較于加載全部腳本,已經(jīng)是大幅減少了,這種優(yōu)化對(duì)訪問(wèn)目標(biāo)性很強(qiáng)的用戶感受起來(lái)尤為明顯。

這么做的另一個(gè)好處就是當(dāng)我們只更改項(xiàng)目中某些頁(yè)面的業(yè)務(wù)代碼時(shí),其他頁(yè)面的代碼依然是不變的,所以這個(gè)時(shí)候其他頁(yè)面用的是客戶端緩存,從另一個(gè)層面又做了一次優(yōu)化。

Tips

react-loadable 還有其他配置選項(xiàng),可以按需配置;

這里還需要注意的一點(diǎn)是:webpack 中的 output.publicPath 選項(xiàng),這個(gè)配置會(huì)影響 app.js 從何處加載頁(yè)面腳本,正確的寫(xiě)法應(yīng)該是腳本文件載入的前綴地址,例如: 0.js 的遠(yuǎn)程鏈接為 http://static.domain.com/release/0.js ,那么這個(gè)應(yīng)該配置為http://static.domain.com/release/。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站標(biāo)題:react實(shí)現(xiàn)頁(yè)面代碼分割、按需加載的方法
當(dāng)前鏈接:http://aaarwkj.com/article2/iipjoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、自適應(yīng)網(wǎng)站、網(wǎng)站改版、網(wǎng)站導(dǎo)航、網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
欧美黄片网站在线观看| 国产在线第一页第二页| 亚洲综合一区国产精品| 欧美成人日本在线播放| 精品少妇人妻久久av免费| 日韩在线不卡av一区二区| 麻豆一精品传二传媒短视频| 免费黄色日韩在线观看| 亚洲精品aa片在线观看国产| 国产实拍之强伦奸在线观看| 精品久久久噜噜噜久久| 日本午夜视频一区二区| 四虎官网免费在线观看| 国产欧美日韩精品久久久久久 | 久久精品亚洲熟女av蜜臀| 少妇高潮喷水下面的水| 国产成人国产三级国产精品| 丰满人妻被猛烈进入中文版| 少妇人妻精品一区三区二区| 久久视频在线播放视频| 日本东京热在线免费观看| 天堂中文在线免费观看av| 亚洲成人日韩国产欧美| 国内揄拍国内精品对久久| 日本国产一区二区精品| 精品午夜免费福利视频| 欧美精品国产精品久久| 亚洲一区二区三区小蜜桃| 东京热男人的天堂视频| 欧美日韩亚洲一区在线| 高颜值紧身牛仔裤国产精品| 丰满少妇在线观看网站| 91久久国产香蕉熟女| 亚洲熟乱熟女一区二区| 亚洲狠狠爱一区二区三区| 日本黄色小网站在线播放| 国产偷人伦激情在线观看| 日韩欧美精品久久黄| 色呦呦一区二区三区视频| 日本成人精品二区在线观看| 日本色小姐美国青青草原|