当前位置:首页 > 前端技术 > vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画

vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画

2022年09月17日 13:07:57前端技术6

当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。

结合 Vue 的 异步组件 和 Webpack 的 code splitting feature, 轻松实现路由组件的懒加载。

我们要做的就是把路由对应的组件定义成异步组件

const Foo = resolve => {
  // require.ensure 是 Webpack 的特殊语法,用来设置 code-split point
  // (代码分块)
  require.ensure(['./Foo.vue'], () => {
    resolve(require('./Foo.vue'))
  })
}

这里还有另一种代码分块的语法,使用 AMD 风格的 require,于是就更简单了:

const Foo = resolve => require(['./Foo.vue'], resolve) 

不需要改变任何路由配置,跟之前一样使用 Foo

const router = new VueRouter({
  routes: [
    { path: '/foo', component: Foo }
  ]
}) 

把组件按组分块

有时候我们想把某个路由下的所有组件都打包在同个异步 chunk 中。只需要 给 chunk 命名,提供 require.ensure 第三个参数作为 chunk 的名称:

const Foo = r => require.ensure([], () => r(require('./Foo.vue')), 'group-foo')
const Bar = r => require.ensure([], () => r(require('./Bar.vue')), 'group-foo')
const Baz = r => require.ensure([], () => r(require('./Baz.vue')), 'group-foo')

Webpack 将相同 chunk 下的所有异步模块打包到一个异步块里面 —— 这也意味着我们无须明确列出 require.ensure 的依赖(传空数组就行)。

如果你想在组件加载的时候可以有loading提示也同样的很简单

这里以mint-ui为例

import { Indicator } from 'mint-ui';
//前提是npm i mint-ui -S

然后你就只需要稍微加一点代码

const Foo = resolve => {
Indicator.open();
  require.ensure(['./Foo.vue'], () => {
    resolve(require('./Foo.vue'))
    Indicator.close()
  })
}
//这样就可以实现组件在异步加载的时候显示loading

效果如下

vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画 _ JavaClub全栈架构师技术笔记vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画 _ JavaClub全栈架构师技术笔记

 

作者:artiely
来源链接:https://www.cnblogs.com/coolslider/p/7074609.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/front/42658.html

标签: vue
分享给朋友:

“vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画” 的相关文章

从壹开始前后端分离【 .NET Core2.2/3.0 +Vue2.0 】框架之五 || Swagger的使用 3.3 JWT权限验证【必看】

从壹开始前后端分离【 .NET Core2.2/3.0 +Vue2.0 】框架之五 || Swagger的使用 3.3 JWT权限验证【必看】

本文3.0版本文章 https://mp.weixin.qq.com/s/7135y3MkUlPIp-flfwscig   下边的是我关于JWT的视频讲解,都可以看看 1、P2直播12期:授权与认证(1)_简单授权 2、P3直播13期:授权与认...

easy-table-vue+VueJs、SpringBoot+Mybatis实现MVVM模型前后台数据交互

easy-table-vue+VueJs、SpringBoot+Mybatis实现MVVM模型前后台数据交互

该项目分为前端展示部分和后台服务部分。 前端部分   使用的技术是:NodeJs、Webpack、VueJs   使用的组件库是:IVIEW、easy-table-vue   使用的开发工具是:WebStorm  链接:https://pan.b...

SpringBoot集成vue的开发解决方案

SpringBoot集成vue的开发解决方案

最近由于工作要求:前端采用vue开发,后端采用springboot开发,前后端分离开发,最后前端页面又整合到后端来。经历多次采坑,总结以下方案: vue build后的文件部署到springboot目录 vue打包后,会生成dist目录...

《Asp.Net Core3 + Vue3入坑教程》-1.Net Core项目搭建与Swagger配置步骤

《Asp.Net Core3 + Vue3入坑教程》-1.Net Core项目搭建与Swagger配置步骤

简介 《Asp.Net Core3 + Vue3入坑教程》 此教程适合新手入门或者前后端分离尝试者。可以根据图文一步一步进操作编码也可以选择直接查看源码。每一篇文章都有对应的源码 教程后期会将 .Net Core 3升级成 .Net Core 5 目...

springboot+vue练手级项目,真实的在线博客系统

springboot+vue练手级项目,真实的在线博客系统

文章目录 spring boot 练手实战项目说明 基础知识 面试准备 1. 工程搭建 1.1 新建maven工程 1.1.2遇到的bug...

vue框架中更改body,html页面背景颜色

beforeCreate () { document.querySelector('body').setAttribute('style', 'background-color:#fff') }, beforeDestroy () { document.query...

【Vue】详解Vue组件系统

【Vue】详解Vue组件系统

本文提纲:1.Vue渲染的两大基础方式 2.组件的局部注册和全局注册 3. Vue中的props数据流 4.Vue的自定义事件 5. Slot的使用   Vue渲染的两大基础方式 new 一个Vue的实例 这个我们一般会使用在挂载根...

Vue的生命周期的详解

Vue的生命周期的详解

Vue的生命周期 Vue的生命周期是每个使用Vue框架的前端人员都需要掌握的知识,以此作为记录。 Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从...

用HBuilderX 打包 vue 项目 为 App 的步骤

用HBuilderX 打包 vue 项目 为 App 的步骤

用HBuilderX 打包 vue 项目 为 App 的步骤 首先打包你的 vue 项目 生成 dist 文件夹,教程请移步  https://www.cnblogs.com/taohuaya/p/...

dotnetcore+vue+elementUI 前后端分离---支持前端、后台业务代码扩展的快速开发框架

dotnetcore+vue+elementUI 前后端分离---支持前端、后台业务代码扩展的快速开发框架

Document 框架采用dotnetcore+vue+elementUI 前后端分离,并且支持前端、后台代码业务动态扩展,框架内置了一套有着20多种属性配置的代码生成器,可灵活配置生成的代码,代码生成器界面配置完成即可生成单表/主从表的增、删、改、查、导入、导出、上传、审核基础...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。