vue-router路由懒加载_前端懒加载原理

vue-router路由懒加载_前端懒加载原理什么是路由懒加载官方的解释:当打包构建应用时,JavaScript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

什么是路由懒加载

官方的解释:

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

官方想表达的意思

  • 首先,我们知道路由中通常会定义很多不同的页面
  • 这个页面最后会被打包到哪里呢?一般情况下是会放在一个js文件中
  • 但是页面这么多,所有文件都放到一个js文件中,必然会造成这个页面会非常的大
  • 如果我们一次性从服务器中请求下来这个页面,可能需要花费一定的时间,甚至用户的电脑上会出现短暂空白的情况
  • 如何避免这种情况?使用路由懒加载即可

路由懒加载做了什么

  • 路由懒加载的主要作用是将路由对应的组件打包成一个个js代码块
  • 只要在这个路由被访问到的时候,才加载对应的组件
     

路由懒加载的使用

在使用之前,我们先来看看原先代码是如何加载路由的

import Vue from "vue";
import VueRouter from "vue-router";
import Home from "@/views/Home";
import About from "@/views/About";
import User from "@/views/User";

Vue.use(VueRouter);

const routes = [
  {
    path: "/",
    name: "Home",
    component: Home,
  },
  {
    path: "/about",
    name: "About",
    component: About
  },
  {
    path: "/user/:userId",
    name: "User",
    component: User
  }
];

我们看到从一开始我们就导入了路由对应的组件,如果需要的导入的组件非常多,那么加载页面就会相对较慢,我们来看下这种方式打包出来的文件
vue-router路由懒加载_前端懒加载原理
我们看到这种方式打包出来的文件只有2个js文件,之后我们加载页面的时候,需要把这2个文件全部加载完,页面才会展示,如果代码量过多,那么页面响应就比较慢,给用户体验非常不好

接下来我们使用路由懒加载

import Vue from "vue";
import VueRouter from "vue-router";

Vue.use(VueRouter);

// 新增路由懒加载代码
const Home = () => import('../views/Home')
const About = () => import('../views/About')
const User = () => import('../views/User')

const routes = [
  {
    path: "/",
    name: "Home",
    component: Home,
  },
  {
    path: "/about",
    name: "About",
    component: About
  },
  {
    path: "/user/:userId",
    name: "User",
    component: User
  }
];

我们看到,在路由配置中什么都不需要改变,只需要像往常一样使即可,只是在这之前声明了一个变量,变量中使用箭头函数来导入对应的组件,使用起来非常简单。

使用路由懒加载的方式打包出来的文件结构如下:
vue-router路由懒加载_前端懒加载原理
我们可以看到比原来的方式多出了3个js文件,这是因为我们上面代码3个组件使用了路由懒加载,这3个js文件只有路由被访问到了才会去加载,能省下不少的加载时间

所以我们更推荐使用路由懒加载的方式去加载路由

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Wireshark抓包实验[通俗易懂]

    Wireshark抓包实验[通俗易懂]Wireshark抓包实验1.1学习Wireshark工具的基本操作学习捕获选项的设置和使用,如考虑源主机和目的主机,正确设置CaptureFilter;捕获后设置DisplayFilter。1.2PING命令的网络包捕获分析PING命令是基于ICMP协议而工作的,发送4个包,正常返回四个包。以主机210.31.40.41为例,主要实验步骤为:(1)设置“捕获过滤”:在…

    2022年9月6日
    2
  • 数组求和方法汇总_用函数的方法对输入的数组求和

    数组求和方法汇总_用函数的方法对输入的数组求和vararr=[1,2,3,4,5,6];测试时我不想过度使用全局变量影响命名空间,所以没使用未声明变量。而是直接通过私有作用域设置静态私有变量,也可以用其他设计模式来限定变量作用域。因为数组对象的迭代方法也是一种遍历,所以也可以借助用来实现求和。一、利用数组对象的各迭代方法:1.array.every()查询是否有所有项都匹配的方法:1(function(){…

    2022年9月28日
    1
  • 如何区分华为交换机类型

    如何区分华为交换机类型

    2021年7月23日
    93
  • 数据库拉链表详解_拉链表断链

    数据库拉链表详解_拉链表断链一、前言在上一节简单介绍了拉链表,本节主要讲解如何通过binlog采集MySQL的数据并且按月分区的方式实现拉链表。这里以上节介绍的用户表(user)举例二、涉及到的表1.原始表(user)原始表指的是MySQL中的表,表结构如下:其中name为主键,如果没有主键则无法做拉链表。2.binlog流水表(user_binlog)操作类型字段枚举值为:insert、update、delete。设…

    2022年10月17日
    0
  • 字符指针 赋值

    字符指针 赋值字符串赋值给字符指针(char*a=“hello”)的正确理解方式 对于语句 char*a=”hello”;       对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给指针表达式”*a”所指向的地址。但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针变量a。       即正确顺序是:1.分配

    2022年7月11日
    15
  • 段式液晶_段式数码 电容 液晶

    段式液晶_段式数码 电容 液晶一 段式液晶BL55070驱动IC:I2C接口4X35断码显示,宽工作电压(2.5~5.5V),-20~70度,静态1/21/31/4背级输出,1/21/3偏置电压生产厂商:上海贝

    2022年8月1日
    2

发表回复

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

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