当一个Vue的项目体积变得十分庞大的时候,使用Webpack的代码分离功能将Vue ComponentsroutesVuex的代码进行分离并按需加载,会极大的提高App的首屏加载速度。

在Vue的项目中,我们可以在三种不同的情况下使用懒加载和代码分离功能:

三者的共同点都是使用的动态import,这在Webpack的第二个版本就开始被支持。

在Vue组件中进行懒加载

在Eggheads中有关于使用Vue异步组件实现按需加载组件的解释。

实现异步组件只需要使用import函数去注册组件即可:


Vue.component('AsyncCmp', () => import('./AsyncCmp'))

也可以使用本地注册组件的方式:


new Vue({
// ...
components: {
'AsyncCmp': () => import('./AsyncCmp')
}
})

使用箭头函数指向import函数,Vue将会在需要该组件的时候才执行请求加载该组件的代码。

如果导入的组件是使用命名的方式进行导出的,你可以在Promise的返回值中使用对象解构的方式实现按需加载组件。下面是加载KeenUI的 UiAlert组件的例子:


components: {
UiAlert: () => import('keen-ui').then(({ UiAlert }) => UiAlert)
}

在Vue router中进行懒加载

Vue router在原生支持懒加载。和懒加载组件的方式一样,都是使用import函数。例如我们想在/login这个路由下懒加载Login组件。


// 不再使用 import Login from './login'
const Login = () => import('./login') new VueRouter({
routes: [
{ path: '/login', component: Login }
]
})

在Vuex中进行懒加载

Vuex的registerModule方法允许我们动态的创建Vuex的模块。如果我们使用import函数在Promise中返回模块作为载荷(payload),就实现了懒加载。


const store = new Vuex.Store() ... // 假设我们想加载'login'这个模块
import('./store/login').then(loginModule => {
store.registerModule('login', loginModule)
})

总结

在Vue + Webpack中是懒加载十分简单。赶快使用上面学习到的方法将你的Vue项目进行代码分离并在它们需要的时候进行按需加载,这样可以显著减少应用首屏加载的时间。

原文链接: Lazy Loading in Vue using Webpack's Code Splitting

最新文章

  1. SqlServer中的自增的ID的最后的值:
  2. Sql 注意点
  3. Sybase ASE报错:server Error: 8242, Severity: 16, State: 1
  4. 各种浏览器的agent信息(IE Chrome Safari Firefox)
  5. 【linux】常用网站
  6. out和ref之间的区别
  7. C# Linq to sql 实现 group by 统计多字段 返回多字段
  8. Hadoop(十二)MapReduce概述
  9. Android App 压力测试方法(Monkey)
  10. python改变输出字体颜色==>colorama
  11. IT程序员的抉择:我要离开帝都了
  12. nginx 信号
  13. Java中List, Integer[], int[]的相互转换
  14. 设计模式 笔记 观察者模式 Observer
  15. css雪碧(CSS Sprite)和css3过渡效果综合应用
  16. Excel中功能清单转Project任务
  17. iPhone/android的viewport 禁止页面自动缩放
  18. OS X 安装pyspider
  19. jar插件应用
  20. 《Kubernetes与云原生应用》系列之容器设计模式

热门文章

  1. 机器学习中常用的距离及其python实现
  2. JSON对象获取指定元素以及JSON.parse() 与 JSON.stringify() 的区别
  3. linux删除登录日志及历史命令
  4. Linux-c给线程取名字
  5. GitHub的使用问题记录
  6. windows和ubuntn互传文件
  7. 编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成
  8. JDK配置环境变量 (JDK安装成功后进行配置)
  9. Python爬虫笔记【一】模拟用户访问之设置处理cookie(2)
  10. Chapter 2 栈和队列