什麼是懶加載html
懶加載也叫延遲加載,即在須要的時候進行加載,隨用隨載。vue
爲何須要懶加載webpack
在單頁應用中,若是沒有應用懶加載,運用webpack打包後的文件將會異常的大,形成進入首頁時,須要加載的內容過多,延時過長,不利於用戶體驗,而運用懶加載則能夠將頁面進行劃分,須要的時候加載頁面,能夠有效的分擔首頁所承擔的加載壓力,減小首頁加載用時web
如何與webpack配合實現組件懶加載vuex
一、在webpack配置文件中的output路徑配置chunkFilename屬性npm
output: {
path: resolve(__dirname, 'dist'),
filename: options.dev ? '[name].js' : '[name].js?[chunkhash]',
chunkFilename: 'chunk[id].js?[chunkhash]',
publicPath: options.dev ? '/assets/' : publicPath
},
chunkFilename路徑將會做爲組件懶加載的路徑babel
二、配合webpack支持的異步加載方法異步
npm install --save-dev babel-core babel-loader babel-plugin-syntax-dynamic-import babel-preset-es2015
use: [{
loader: 'babel-loader',
options: {
presets: [['es2015', {modules: false}]],
plugins: ['syntax-dynamic-import']
}
}]
引言ui
而在webpack > 2的時代,vue作代碼分割懶加載更加的easy,不須要loader,不須要require.ensure。spa
import解決一切。
分割層級
Vue代碼分割懶加載包含以下幾個層級:
一、 組件層級分割懶加載
二、 router路由層級
三、 Vuex 模塊
組件層級代碼分割
//全局組件
Vue.component('AsyncComponent', () => import('./AsyncComponent'))
//局部註冊組件
new Vue({
// ...
components: {
'AsyncComponent': () => import('./AsyncComponent')
}
})
// 若是不是default導出的模塊
new Vue({
// ...
components: {
'AsyncComponent': () => import('./AsyncComponent').then({ AsyncComponent }) => AsyncComponent
}
})
路由層級代碼分割
const AsyncComponent= () => import('./AsyncComponent')
new VueRouter({
routes: [
{ path: '/test', component: AsyncComponent}
]
})
Vuex 模塊代碼分割,vuex中有動態註冊模塊方法,同時也是加上import
const store = new Vuex.Store()
import('./store/test').then(testModule => {
store.registerModule('test', testModule)
})
總結
在通常項目中,咱們按照router和components層面分割(或者只使用router分割)就足夠了。大型項目可能三者都會用到,但用法都很簡單