1.使用vue异步组件的方式
vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 .
但是,这种情况下一个组件生成一个js文件
/* vue异步组件技术 */
{
path: '/home',
name: 'home',
component: resolve => require(['@/components/home'],resolve)
},{
path: '/index',
name: 'Index',
component: resolve => require(['@/components/index'],resolve)
},{
path: '/about',
name: 'about',
component: resolve => require(['@/components/about'],resolve)
}
2.组件懒加载方案二 路由懒加载(使用import)
// 下面2行代码,没有指定webpackChunkName,每个组件打包成一个js文件。
/* const Home = () => import('@/components/home')
const Index = () => import('@/components/index')
const About = () => import('@/components/about') */
// 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。 把组件按组分块
const Home = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/home')
const Index = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/index')
const About = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/about')
1
3.webpack提供的require.ensure()
vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。
这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。
const index = r => require.ensure([], () => r(require('@/page/index')), 'index')
const userManage = r => require.ensure([], () => r(require('@/page/user-manage')), 'user-manage')
const roleManage = r => require.ensure([], () => r(require('@/page/role-manage')), 'role-manage')
const logManage = r => require.ensure([], () => r(require('@/page/log-manage')), 'log-manage')
const dataApproval = r => require.ensure([], () => r(require('@/page/data-approval')), 'data-approval')
export default new Router({
routes: [
{
path: '/',
component: index,
children: [
{
path: '/',
component: userManage
},
{
path: '/userManage',
component: userManage
},
{
path: '/roleManage',
component: roleManage
},
{
path: '/logManage',
component: logManage
},
{
path: '/dataApproval',
component: dataApproval
}
]
}
]
})