vue 路由懒加载

vue 路由懒加载本文已参与 新人创作礼 活动 一起开启掘金创作之路 1 路由懒加载如何实现当打包构建应用时 JavaScript 包会变得非常大 影响页面加载 如果我们能把不同路由对应的组件分割成不同的代码块 然后当路由被访问的时候才加载对应组件 这样就会更加高效当前 我们使用如下方式导入组件 importLoginf views Login 打包后 这些组件都会被打包到一个 s 文件中 css 代码会打包到 css 文件中访问应用时 就会下载这 js 文件和对应的 css 文件随着代码的增多 文件

1. 路由懒加载如何实现

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

当前,我们使用如下方式导入组件

import Login from '../views/Login 

打包后,这些组件都会被打包到一个.s文件中,css 代码会打包到 css 文件中

在这里插入图片描述

访问应用时,就会下载这js文件和对应的css文件

在这里插入图片描述

随着代码的增多,文件的体积也会越来越大

文件中包含了所有的用户组件的js以及css代码,但用户可能根本不会浏览器到某些页面,也就是说根本不需要渲染某些组件,所以vue-router 提供了一种路由懒加载机制,就是当某个路由规则匹配时,才会去加载下载并加载某个组件,此时可以提升首页的渲染速度

路由懒加载实现的基础是组件引入方式的变化,需要使用 如下方式引入组件才可以

const Login = () => import('../views/Login') 

这是原来的引入方式

import Login from '../views/Login 

对比原来的引入方式,就能发现不同点:现在的 Login 是个函数,当路由规则匹配上,就会执行这个函数,才去加载此组件

 { path: '/login', name: 'login', component: Login // 此时的 login 是函数 }, 

将所有组件的引入方式都像上面这样修改后,重新打包,由原来的一个js文件拆分成了体积较小的多个js文件

在这里插入图片描述

现在,我们来请求登录页面,请求多个小文件

在这里插入图片描述

此时再访问用户列表页面,会动态加载新的js和css文件,其他页面也都是这种情况

在这里插入图片描述

这种情况,其实是通过增加网络请求次数换取了每次请求包的缩小,可以明显提升首页加载速度

此时,看看这张图,发现再 3G Slow 网速下,加载速度由原来的 36秒多变成了11秒多点,在正常的4G网速下,达到了0.67秒

在这里插入图片描述

2.把组件按组分块

上面,我们是将每个组件都分别打包了,很多时候是没有必要的,可以将多个组件打包到一个包中

const UserDetails = () => import(/* webpackChunkName: "group-user" */ './UserDetails.vue') const UserDashboard = () => import(/* webpackChunkName: "group-user" */ './UserDashboard.vue') const UserProfileEdit = () => import(/* webpackChunkName: "group-user" */ './UserProfileEdit.vue') 

下面修改上面的代码,进行分组打包

// 1、将登录、用户首页模块打包到一组中,组名:login-home const Login = () => import(/* webpackChunkName: "login-home" */ '../views/Login') const Home = () => import(/* webpackChunkName: "login-home" */ '../views/Home') // 2、将用户模块、权限和角色打包到一组中 const Users = () => import(/* webpackChunkName: "user-rights" */ '../views/Users') const Roles = () => import(/* webpackChunkName: "user-rights" */ '../views/Roles') const Rights = () => import(/* webpackChunkName: "user-rights" */ '../views/Rights') // 3、将商品分类、商品参数、商品列表、添加商品打包到一组中 const GoodsList = () => import(/* webpackChunkName: "goods" */ '../views/goods/GoodsList') const GoodsAdd = () => import(/* webpackChunkName: "goods */ '../views/goods/GoodsAdd') const Category = () => import(/* webpackChunkName: "goods */ '../views/goods/Category') const Params = () => import(/* webpackChunkName: "goods */ '../views/goods/Params') 

重新打包

在这里插入图片描述

此时,运行程序,打开各个页面,通过网络查看资源的加载情况,如打开用户列表

在这里插入图片描述

访问商品列表

image.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207737.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午1:12
下一篇 2026年3月19日 下午1:12


相关推荐

  • Java cas原理_java cas原理

    Java cas原理_java cas原理CASCAS:CompareandSwap,翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文先从CAS的应用说起,再深入原理解析。CAS应用CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。非阻塞算

    2022年10月16日
    5
  • 获取不同机型外置SD卡路径

    获取不同机型外置SD卡路径

    2022年1月19日
    50
  • 一句话搞定P图!腾讯元宝的AI编辑,正在重构修图软件的时代

    一句话搞定P图!腾讯元宝的AI编辑,正在重构修图软件的时代

    2026年3月12日
    3
  • 国外最流行的Bootstrap后台管理模板

    国外最流行的Bootstrap后台管理模板工欲善其事,必先利其器对于从事软件开发的您也一样,有一套熟悉的bootstrap后台ui框架让您的开发速度大幅度提升这是本人经常使用到的一些bootstrap后台框架推荐给大家第一名inspiniabootstrap演示地址http://cn.inspinia.cn效果图http://cn.inspinia.cnhttp://cn.inspinia.cn第二名…

    2022年4月25日
    48
  • 指针常量和常量指针区别

    指针常量和常量指针区别1 指针常量 指针类型的常量 int constp 本质上一个常量 指针用来说明常量的类型 表示该常量是一个指针类型的常量 在指针常量中 指针自身的值是一个常量 不可改变 始终指向同一个地址 在定义的同时必须初始化 用法如下 inta 10 b 20 int constp amp a p 30 p 指向的地址是一定的 但其内容可以修改 2 常量指针 指向 常量 的指针 constint p intconst p 常量指针本质上是一个指

    2026年3月26日
    3
  • https加密原理(转)

    https加密原理(转)HTTP、HTTPS在我们日常开发中是经常会接触到的。我们也都知道,一般Android应用开发,在请求API网络接口的时候,很多使用的都是HTTP协议;使用浏览器打开网页,也是利用HTTP协议。看来HTTP真是使用广泛啊,但是,HTTP是不安全的。利用网络抓包工具就可以知道传输中的内容,一览无余。比如我经常会使用Fiddler来抓包,搜集一些有趣的API接口。那么…

    2022年5月20日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号