vue-router路由懒加载以及三种实现方式

什么是路由懒加载?

延迟加载或按需加载路由所对应的组件,而不是在应用初始化时就一次性加载所有组件。
路由懒加载做了什么事情?

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

即:只有在这个路由被访问到的时候,才加载对应的组件,否则不加载!

如何实现路由懒加载?

 vue项目实现路由按需加载(路由懒加载)的三种方式:

  •      Vue异步组件
  •      ES6标准语法import() 常用
  •      webpack的require,ensure()
Vue异步加载技术

   vue-router配置路由,使用vue的异步组件技术,可以实现懒加载,一个组件会生成一个js文件。

   component: resolve => require(['放入需要加载的路由地址'], resolve){path: '/problem',name: 'problem',component: resolve => require(['../pages/home/problemList'], resolve)}
ES6推荐方式imprort ()
  •      直接将组件引入的方式,import是ES6的一个语法标准,如果需要浏览器兼容,需要转化   成es5的语法。
  •     推荐使用这种方式,但是注意wepack的版本>2.4
  •     vue官方文档中使用的也是import实现路由懒加载

  上面声明导入,下面直接使用

import Vue from 'vue';
import Router from 'vue-router';
// 官网可知:下面没有指定webpackChunkName,每个组件打包成一个js文件。
const Foo = () => import('../components/Foo')
const Aoo = () => import('../components/Aoo')
// 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。
// const Foo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/Foo')
// const Aoo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/Aoo')
export default new Router({routes: [{path: '/Foo',name: 'Foo',component: Foo},{path: '/Aoo',name: 'Aoo',component: Aoo}]
})
webpack提供的require.ensure()实现懒加载:
  •    vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。
  •     这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。
  •     require.ensure可实现按需加载资源,包括js,css等。他会给里面require的文件单独打包,        不会和主文件打包在一起。
  •     第一个参数是数组,表明第二个参数里需要依赖的模块,这些会提前加载。
  •     第二个是回调函数,在这个回调函数里面require的文件会被单独打包成一个chunk,不会和主      文件打包在一起,这样就生成了两个chunk,第一次加载时只加载主文件。
  •    第三个参数是错误回调。
  •    第四个参数是单独打包的chunk的文件名
import Vue from 'vue';
import Router from 'vue-router';
const HelloWorld=resolve=>{require.ensure(['@/components/HelloWorld'],()=>{resolve(require('@/components/HelloWorld'))})}
Vue.use('Router')
export default new Router({routes:[{{path:'./',name:'HelloWorld',component:HelloWorld}}]
})
import和require的比较(了解)
  • import 是解构过程并且是编译时执行
  • require 是赋值过程并且是运行时才执行,也就是异步加载
  • require的性能相对于import稍低,因为require是在运行时才引入模块并且还赋值给某个变量

相关文章👉   vue-router路由懒加载以及三种实现方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows系统安装OpenSSH使用VScode远程连接内网Linux服务器开发

文章目录 💡推荐 前言1、安装OpenSSH2、VS Code配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网…

【详细讲解】二叉树的层序遍历

广度优先搜索 总结一下,思路就是: 加入元素,记录size,size就是当前这一层的元素个数。不断弹出元素,size - 1, 同时加入弹出元素的左右孩子,直到size0,说明当前层已经完全遍历完&am…

解决vue版本不一致导致不能正常编译

解决vue版本不一致导致不能正常编译 异常现象分析原因解决方案 异常现象 项目原本运行无异常,但安装了一个el-table-infinite-scroll的插件后,编译报错,截图如下 分析原因 vue版本与compile版本不一致,应该统一起来&#xff0…

C++下的内存管理

文章目录 内存分布C语言中动态内存管理方法C内存管理new/delete操作内置类型new和delete操作自定义类型operator new 和 operator deletenew和delete的实现原理定位new表达式 malloc/free和new/delete的区别内存泄漏 内存分布 栈:又叫做堆栈–非静态局部变量/函数参…

算法学习笔记(5.1)-基于比较的高效排序算法(快速排序,堆排序)

##时间复杂度O(NlogN) 目录 ##时间复杂度O(NlogN) ##快速排序 ##原理 ##图例 ##代码实现 ##堆排序 ##原理 ##图例 ##代码实现 ##快速排序 ##原理 快速排序的核心操作是“哨兵划分”,其目标是:选择数组中的某个元素作为“基准数”,…

【编译原理复习笔记】语法分析(一)

分类 语法分析可以按照分析方向分为两类 自顶向下/自底向上 自顶向下的分析 从分析树的顶部向底部方向构造分析树 每一步推导需要做两个选择: (1)需要替换哪个非终结符 (2)用哪个产生式 最左推导 在最左推导中&am…

【重学C++】02 脱离指针陷阱:深入浅出 C++ 智能指针

前言 大家好,今天是【重学C】系列的第二讲,我们来聊聊C的智能指针。 为什么需要智能指针 在上一讲《01 C如何进行内存资源管理》中,提到了对于堆上的内存资源,需要我们手动分配和释放。管理这些资源是个技术活,一不…

正点原子LWIP学习笔记(一)lwIP入门

lwIP入门 一、lwIP简介(了解)二、lwIP结构框图(了解)三、如何学习lwIP(熟悉) 一、lwIP简介(了解) lwIP是一个小型开源的TCP/IP协议栈 阉割的TCP/IP协议 TCP/IP协议栈结构&#xff0…

C语言游戏实战(12):植物大战僵尸(坤版)

植物大战僵尸 前言: 本游戏使用C语言和easyx图形库编写,通过这个项目我们可以深度的掌握C语言的各种语言特性和高级开发技巧,以及锻炼我们独立的项目开发能力, 在开始编写代码之前,我们需要先了解一下游戏的基本规则…

基础2 JAVA图形编程桌面:探索图形程序的抽象实现

嘿,大家好!我非常高兴又一次有机会与大家相聚,分享新的知识和经验。对于热爱编程和探索新技术的朋友们来说,今天的内容绝对不容错过。我为大家准备了一个详尽的视频教程:《基础2 JAVA 图形编程:主程序调用…

【Python爬虫】Selenium使用

安装配置教程自行搜索 所用驱动chromedriver应与chrome浏览器版本相对应 pip install selenium 笔者selenium所用版本为4.11.2,新旧版之间会有差别 from selenium import webdriver driver webdriver.Chrome()实例化driver对象后,driver对象有一些常…

vue(十二) 组件二 动态组件(Component)和异步组件(defineAsyncComponent)

文章目录 组件注册1.全局注册2.局部注册3.组件名格式 动态组件异步组件1.基本使用2.加载与错误状态3.搭配Suspense 组件使用 组件注册 一个 Vue 组件在使用前需要先被“注册”,这样 Vue 才能在渲染模板时找到其对应的实现。组件注册有两种方式:全局注册…

git拉取项目前需要操作哪些?

1.输入 $ ssh-keygen -t rsa -C "秘钥说明" 按enter键 2.出现 ssh/id_rsa:(输入也可以不输入也可以) 然后按enter键 3.出现empty for no passphrase:(输入也可以不输入也可以) 然后按enter键 4.出现same passphrase again: (输入也可以不输入也…

程序员如何减肥

目录 基本的生化知识减肥三板斧关于减肥药 基本的生化知识 人体供能顺序。是糖原——脂肪——蛋白质,只有先将肝糖原耗尽,机体才会动用脂肪。因为糖原分解靠的是三羧酸循环,脂肪分解靠的是脂肪动员和丙酮分解。如果一个人动用蛋白质来供能&a…

linux下直接使用别人的anaconda环境,copy别人环境

1.直接使用别人的anaconda安装环境 source /home/XXX/anaconda3/bin/activate conda activate labelme 2.copy anaconda环境 cp -r /home/XXX/anaconda3/envs/x-anylabeling /home/YYY/anaconda3/envs conda config --append envs_dirs /home/YYY/anaconda3/envs conda activa…

20240516-Flyme AIOS 特种兵发布会

目录 1 Flyme AIOS 2 路演功能 2.1 拖拽流转 2.2 任务剧本自定义 2.3 智能体商店 2.4 实况通知 2.5 AI壁纸 3 MYVU 3.1 翻译功能 3.2 AR导航-骑行 3.3 AI语音转文字-科技向善 3.4 Flyme AR-提词器增强 1 Flyme AIOS 1)目标:All in AI&#…

AI绘图Stable Diffusion,如何无损高清放大图片,保姆级教程建议收藏!

前言 我们在用 stable diffusion 制作AI图片时,默认生成图片的尺寸为512*512,即使是竖图一般也就是512*768,如果再把尺寸设置大一些,就会因为硬件算力不够而造成系统崩溃,今天就来跟大家聊一聊,如何将制作…

RocketMQ-Dashboard 控制台使用详解

1 安装部署 具体部署启动请参考:RocketMQ从安装、压测到运维一站式文档_rocketmq benchmark压测-CSDN博客 RocketMq的dashboard,有运维页面,驾驶舱,集群页面,主题页面,消费者页面,生产者页面&…

[解决]静态方法不能使用泛型

public static Result<T> success(T data){Result<T> result new Result<>(data);result.setCode("200");result.setMsg("success");return result;}会报错&#xff0c;因为静态方法不能使用泛型 解决方法&#xff1a; 在static后加上…

【Kubenetes】边缘计算KubeEdge架构设计详解

文章目录 前言KubeEdge云边通信方式云端架构设计EdgeController:云到边&#xff1a;边到云 DeviceController:云到边边到云 边缘端架构设计EdgedPod的管理部分Pod的监控部分Pod的卷管理Pod的垃圾回收Pod同步管理 MetaMangger从云到边缘的更新 (Update From Cloud To Edge)从边缘…