欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么在webpack中使用import()動態(tài)加載模塊

怎么在webpack中使用import()動態(tài)加載模塊?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

為陳巴爾虎等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及陳巴爾虎網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站制作、成都網(wǎng)站建設、陳巴爾虎網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

import

webpack根據(jù)ES2015 loader 規(guī)范實現(xiàn)了用于動態(tài)加載的import()方法。

這個功能可以實現(xiàn)按需加載我們的代碼,并且使用了promise式的回調,獲取加載的包。

在代碼中所有被import()的模塊,都將打成一個單獨的包,放在chunk存儲的目錄下。在瀏覽器運行到這一行代碼時,就會自動請求這個資源,實現(xiàn)異步加載。

這里是一個簡單的demo。

import('lodash').then(_ => {
  // Do something with lodash (a.k.a '_')...
 })

可以看到,import()的語法十分簡單。該函數(shù)只接受一個參數(shù),就是引用包的地址,這個地址與es6的import以及CommonJS的require語法用到的地址完全一致??梢詫崿F(xiàn)無縫切換【寫個正則替換美滋滋】。

并且使用了Promise的封裝,開發(fā)起來感覺十分自在?!景b一個async函數(shù)就更爽了】

然而,以上只是表象。

只是表象。

我在開發(fā)的時候就遇到了問題。場景是這樣的:一個對象,存儲的是各級的路由信息,及其對應的頁面組件。為減少主包大小,我們希望動態(tài)加載這些頁面。

同時使用了react-loadable來簡化組件的懶加載封裝。代碼如下所示。

function lazyLoad(path) {
 return Loadable({
  loader: () => import(path),
  loading: Spin,
 });
}

然后我就開始開心的在代碼中寫上lazyLoad('./pages/xxx')。果不其然,掛了。瀏覽器表示,沒有魚丸沒有粗面,也不知道這個傻逼模塊在哪里。

于是我查看了官方文檔,發(fā)現(xiàn)有一個黃條提示。

怎么在webpack中使用import()動態(tài)加載模塊

emmm,看來問題出在這里了。

這個現(xiàn)象其實是與webpack import()的實現(xiàn)高度相關的。由于webpack需要將所有import()的模塊都進行單獨打包,所以在工程打包階段,webpack會進行依賴收集。

此時,webpack會找到所有import()的調用,將傳入的參數(shù)處理成一個正則,如:

import('./app'+path+'/util') => /^\.\/app.*\/util$/

也就是說,import參數(shù)中的所有變量,都會被替換為【.*】,而webpack就根據(jù)這個正則,查找所有符合條件的包,將其作為package進行打包。

因此,如果我們直接傳入一個變量,webpack就會把 (整個電腦的包都打包進來[不鬧]) 認為你在逗他,并且拋出一個WARNING: Critical dependency: the request of a dependency is an expression。

所以import的正確姿勢,應該是盡可能靜態(tài)化表達包所處的路徑,最小化變量控制的區(qū)域。

如我們要引用一堆頁面組件,可以使用import('./pages/'+ComponentName),這樣就可以實現(xiàn)引用的封裝,同時也避免打包多余的內容。

另外一個影響功能封裝的點,是import()中的相對路徑,是import語句所在文件的相對路徑,所以進一步封裝import時會出現(xiàn)一些麻煩。

看完上述內容,你們掌握怎么在webpack中使用import()動態(tài)加載模塊的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

新聞標題:怎么在webpack中使用import()動態(tài)加載模塊
分享鏈接:http://chinadenli.net/article24/ihjgce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站網(wǎng)站設計、服務器托管、ChatGPT、網(wǎng)頁設計公司、小程序開發(fā)

廣告

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

成都定制網(wǎng)站建設