一、vue的異步組件加載
使用異步組件加載,打包的時候會將每個組件分開打包到不同的js文件中:
{path: '/index', name: 'index', meta:{ title:'首頁', requireAuth:true }, /*這是異步加載組件,當你訪問時 ,才會加載 ,vue-router中,require代替import解決vue項目首頁加載時間過久的問題*/ component: resolve => { clearTimeout(_pageTimer);
//這里是設置定時器,超過時間,如果沒有被停止,則輸出“網絡加載超時” _pageTimer = setTimeout(function () { tipsCallback();//作用輸出字符串提示 },timeout); require(['@/page/index/index.vue'], function (component) {
//在組件加載完后,如果定時器存在,則清除定時器。 if(_pageTimer){clearTimeout(_pageTimer);} resolve(component) }) }},
二、ES新提案:import()——動態加載ES模塊
官方推薦使用這種方式,注意如果你希望在Vue router 的路由組件中使用這種語法的話,你必須使用 Vue Router 2.4.0+ 版本。
{ path: '/index', component: () => import('@/page/index/index'), name: '首頁' },
三、webpack提供的require.ensure()
語法:require.ensure(dependencies: String[], callback: function(require), chunkName: String)
1、dependencies:依賴
這是一個字符串數組,通過這個參數,在所有的回調函數的代碼被執行前,我們可以將所有需要用到的模塊進行聲明。
2、callback:回調
當所有的依賴都加載完成后,webpack會執行這個回調函數。require 對象的一個實現會作為一個參數傳遞給這個回調函數。因此,我們可以進一步 require()
依賴和其它模塊提供下一步的執行。
3、chunkName:chunk名稱
chunkName 是提供給這個特定的 require.ensure()
的 chunk 的名稱。通過提供 require.ensure()
不同執行點相同的名稱,我們可以保證所有的依賴都會一起放進相同的 文件束(bundle)。
{ path: '/index', component: r => require.ensure([], () => r(require('@/pages/index/index')), 'index'), meta: { title: '首頁' } }
這里只是做記錄使用。