[关闭]
@2890594972 2018-08-07T08:12:09.000000Z 字数 1520 阅读 874

vue项目实现按需加载的3种方式

vue


转自:https://segmentfault.com/a/1190000011519350

1、vue异步组件
2、es提案的import()
3、webpack的require.ensure()

  1. vue异步组件技术 ==== 异步加载
    vue-router配置路由,使用vue的异步组件技术,可以实现按需加载。
    但是,这种情况下一个组件生成一个js文件。
  1. /* vue异步组件技术 */
  2. {
  3. path: '/home',
  4. name: 'home',
  5. component: resolve => require(['@/components/home'],resolve)
  6. },{
  7. path: '/index',
  8. name: 'Index',
  9. component: resolve => require(['@/components/index'],resolve)
  10. },{
  11. path: '/about',
  12. name: 'about',
  13. component: resolve => require(['@/components/about'],resolve)
  14. }

2、组件懒加载方案二: 路由懒加载(使用import())

  1. // 下面2行代码,没有指定webpackChunkName,每个组件打包成一个js文件。
  2. /* const Home = () => import('@/components/home')
  3. const Index = () => import('@/components/index')
  4. const About = () => import('@/components/about') */
  5. // 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。 把组件按组分块
  6. const Home = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/home')
  7. const Index = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/index')
  8. const About = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/about')
  1. {
  2. path: '/about',
  3. component: About
  4. }, {
  5. path: '/index',
  6. component: Index
  7. }, {
  8. path: '/home',
  9. component: Home
  10. }

3、 webpack提供的require.ensure()
vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。
这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。

  1. /* 组件懒加载方案三: webpack提供的require.ensure() */
  2. {
  3. path: '/home',
  4. name: 'home',
  5. component: r => require.ensure([], () => r(require('@/components/home')), 'demo')
  6. }, {
  7. path: '/index',
  8. name: 'Index',
  9. component: r => require.ensure([], () => r(require('@/components/index')), 'demo')
  10. }, {
  11. path: '/about',
  12. name: 'about',
  13. component: r => require.ensure([], () => r(require('@/components/about')), 'demo-01')
  14. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注