国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue路由組件按需加載的幾種方法小結

2024-05-06 15:32:46
字體:
來源:轉載
供稿:網友

1. 普通加載

使用vue-cli構建項目后,我們會在Router文件夾下面的index.js里面引入相關的路由組件,如:

import Hello from '@/components/Hello'import Boy from '@/components/Boy'import Girl from '@/components/Girl'

這樣做的結果就是webpack在npm run build的時候會打包成一個整個的js文件,如果頁面一多,會導致這個文件非常大,加載緩慢,為了解決這個問題,需要將他分成多個小文件,而且還要實現異步按需加載,即用到了再加載,而不用一股腦全部加載

2. webpack的require.ensure()實現按需加載

語法:require.ensure(dependencies: String[], callback: function(require), errorCallback: function(error), chunkName: String)

    dependencies:字符串構成的數組,聲明 callback 回調函數中所需的所有模塊,模塊作為依賴被加載 callback:只要加載好全部依賴,webpack 就會執行此函數。require 函數的實現,作為參數傳入此函數。當程序運行需要依賴時,可以使用 require() 來加載依賴。函數體可以使用此參數,來進一步執行 require() 模塊。 errorCallback:當 webpack 加載依賴失敗時,會執行此函數。 chunkName:由 require.ensure() 創建出的 chunk 的名字。通過將同一個 chunkName 傳遞給不同的 require.ensure() 調用,我們可以將它們的代碼合并到一個單獨的 chunk 中,從而只產生一個瀏覽器必須加載的 bundle。

使用方法一:

require.ensure([], function(require){  require('./a.js');});// 此時會單獨打包出一個js文件,沒有自定義名稱的話,會被命名為1.js(有hash時候會帶上md5)

使用方法二:

require.ensure(['./a.js'], function(require) {  require('./b.js');});

1、此時a.js作為依賴被加載,但是沒有被執行(官方文檔說的only loads the modules)
2、a.js和b.js會被打包成一個文件。
3、回調函數里只require了b.js,只有b.js的內容會被執行。
4、如果你需要使用a.js的內容,需要再加上require('./a.js')

require.ensure(['./list'], function(require){  var list = require('./list');  list.show();});

給require.ensure的第一個參數傳了['./list'],執行到這里的時候list.js會被瀏覽器下載下來,但是并不會執行list.js模塊中的代碼,也就是webpack官網說的,不會進行evaluate。真正進行evaluate的時候是到了后面這句var list = require('./list');這就是所謂的懶執行。

寫在函數中的多個模塊會被打包在一起,這一點和上面沒有區別。另外,寫在數組中的模塊也會跟他們打包在一起,不管你有沒有手動執行。

vue中使用

comst List = resolve => {  require.ensure([],() => {    resolve(require('./list'))  },'list')}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 孝昌县| 台湾省| 宣汉县| 重庆市| 洛阳市| 左权县| 柞水县| 吴川市| 唐山市| 舞阳县| 冕宁县| 交口县| 云龙县| 曲周县| 武汉市| 荣成市| 鹤峰县| 吉水县| 东海县| 鸡西市| 麟游县| 霍山县| 阿勒泰市| 天柱县| 武川县| 汤阴县| 海城市| 凤冈县| 阿瓦提县| 漳浦县| 博乐市| 博客| 北京市| 商洛市| 个旧市| 上饶市| 富蕴县| 原阳县| 平乐县| 岳普湖县| 临漳县|