VUE路由懒加载的3种方式


 

正常引入方式:

const router = new Router({
   routers: [
    {
      path: '/login',
      component: (resolve) => { require(['@/components/login/Login'], resolve)}
    },
    {
      path: '/home',
      component: (resolve) => { require(['@/components/home/Home'], resolve)}
    }
  ]
})

2 路由懒加载(官方:把组件按组分块)

每个 () => import() 都会生成一个独立的JS文件
也就是说:只要使用这个语法,就是告诉 webpack 这就是一个代码分割点,这样生成一个独立的js文件,来实现按需加载的功能

相关代码:

const Goods = () => import(/* webpackChunkName: 'goods' */'@/components/goods')
const GoodsAdd = () => import(/* webpackChunkName: 'goods' */'@/components/goods-add')

3 webpack提供的require.ensure()

require.ensure()的语法:

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

const router = new Router({
  routers: [
    {
      path: '/login',
      component: r => require.ensure([], () => r(require('@/components/login/Login')), 'login')
    },
    {
      path: '/home',
      component: r => require.ensure([], () => r(require('@/components/home/Home')), 'home')
    },
  ]
})