博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Webpack的代码分离实现Vue懒加载
阅读量:6823 次
发布时间:2019-06-26

本文共 1227 字,大约阅读时间需要 4 分钟。

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

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

  • Vue组件,也称为
  • Vue-Router
  • Vuex

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

在Vue组件中进行懒加载

在Eggheads中有关于的解释。

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

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

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

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

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

如果导入的组件是使用命名的方式进行导出的,你可以在Promise的返回值中使用对象解构的方式实现按需加载组件。下面是加载的 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项目进行代码分离并在它们需要的时候进行按需加载,这样可以显著减少应用首屏加载的时间。

原文链接:

转载于:https://www.cnblogs.com/lovellll/p/10180137.html

你可能感兴趣的文章
java数据结构 • 面向对象 • 异常 • 随机数·时间
查看>>
springmvc 实现pc端手机端适配(同一个请求根据不同客户端展示不同界面)
查看>>
BTree和B+Tree详解
查看>>
VS2005工程迁移到Eclipse CDT
查看>>
Linux高端内存映射(上)【转】
查看>>
usb_control_msg参数详解【转】
查看>>
8086汇编指令速查手册
查看>>
j2EE web.xml中的url-pattern的映射规则
查看>>
带输入输出参数的存储过程
查看>>
字符编码简介
查看>>
LevelDB源码之六缓存机制
查看>>
双向链表
查看>>
安装unity3d多个版本共存
查看>>
如何获取模拟器安装的app的位置
查看>>
[LeetCode] Largest Rectangle in Histogram 解题报告
查看>>
apache配置中ProxyPassReverse指令的含义
查看>>
算法整理-二叉树和堆栈
查看>>
如何设计一个“高大上”的 logo
查看>>
clustalo安装
查看>>
[日常] Go语言圣经--示例: 并发的Clock服务习题
查看>>