vue-router实现路由懒加载( 动态加载路由 )_前端懒加载原理

vue-router实现路由懒加载( 动态加载路由 )_前端懒加载原理为什么需要懒加载?    像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出啊先长时间的白屏,即使做了loading也是不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时vue异步组件 es提案的import() webpack…

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

Jetbrains全系列IDE稳定放心使用

Vue全套学习学习视频:B站

小胖梅-的个人空间_哔哩哔哩_Bilibili

 

为什么需要懒加载?

    像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出啊先长时间的白屏,即使做了loading也是不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时

  1. vue异步组件
  2. es提案的import()
  3. webpack的require,ensure()

1 . vue异步组件技术 ==== 异步加载 

vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 . 
但是,这种情况下一个组件生成一个js文件

/* vue异步组件技术 */

{ path: ‘/home’, name: ‘home’, component: resolve => require([‘@/components/home’],resolve) },

{ path: ‘/index’, name: ‘Index’, component: resolve => require([‘@/components/index’],resolve) },

{ path: ‘/about’, name: ‘about’, component: resolve => require([‘@/components/about’],resolve) }

非懒加载:

vue-router实现路由懒加载( 动态加载路由 )_前端懒加载原理

懒加载

vue-router实现路由懒加载( 动态加载路由 )_前端懒加载原理

2.组件懒加载方案二 路由懒加载(使用import)

const 组件名=() => import(‘组件路径’);

// 下面2行代码,没有指定webpackChunkName,每个组件打包成一个js文件。

/* const Home = () => import(‘@/components/home’)

const Index = () => import(‘@/components/index’)

const About = () => import(‘@/components/about’) */

// 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。

把组件按组分块

const Home = () => import(/* webpackChunkName: ‘ImportFuncDemo’ */ ‘@/components/home’)

const Index = () => import(/* webpackChunkName: ‘ImportFuncDemo’ */ ‘@/components/index’)

const About = () => import(/* webpackChunkName: ‘ImportFuncDemo’ */ ‘@/components/about’)

{ path: ‘/about’, component: About }, { path: ‘/index’, component: Index }, { path: ‘/home’, component: Home }

3.webpack提供的require.ensure() 

vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。 
这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。

/* 组件懒加载方案三: webpack提供的require.ensure() */

{ path: ‘/home’, name: ‘home’, component: r => require.ensure([], () => r(require(‘@/components/home’)), ‘demo’) },

{ path: ‘/index’, name: ‘Index’, component: r => require.ensure([], () => r(require(‘@/components/index’)), ‘demo’) },

{ path: ‘/about’, name: ‘about’, component: r => require.ensure([], () => r(require(‘@/components/about’)), ‘demo-01’) }

// r就是resolve
const list = r => require.ensure([], () => r(require(‘../components/list/list’)), ‘list’);
// 路由也是正常的写法  这种是官方推荐的写的 按模块划分懒加载 
const router = new Router({

    routes: [
        {

           path: ‘/list/blog’,
           component: list,
           name: ‘blog’
        }
    ]
})
 

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

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

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


相关推荐

  • Springboot之poi导出

    Springboot之poi导出Springboot之poi导出

    2022年4月23日
    46
  • 2021年G3锅炉水处理模拟试题及G3锅炉水处理模拟考试题库[通俗易懂]

    题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:N1叉车司机实操考试视频参考答案及N1叉车司机考试试题解析是安全生产模拟考试一点通题库老师及N1叉车司机操作证已考过的学员汇总,相对有效帮助N1叉车司机操作证考试学员顺利通过考试。1、【多选题】《特种设备使用管理规则》规定,特种设备安全管理制度中,包括特种设备采购、安装、()等制度。(ACD)A、改造B、销售C、修理D、报废2、【多选题】叉车工作中要保持三个距离:()。(ABC)A、叉车与…

    2022年4月16日
    41
  • 异想天开 网商-男人商铺(六)

    异想天开 网商-男人商铺(六)

    2022年1月21日
    40
  • 面试:最易被忽略的12种高级错误

    面试:最易被忽略的12种高级错误

    2021年7月23日
    48
  • C# FileStream类

    C# FileStream类C#FileStream类在C#语言中文件读写流使用FileStream类来表示,FileStream类主要用于文件的读写,不仅能读写普通的文本文件,还可以读取图像文件、声音文件等不同格式的文件。区别于File类的是它对文件可进行分步读写,减小内存压力,缺点是我们需要手动的关闭和释放资源,FileAccessFileAccess枚举类型主要用于设置文件的访问方式,具体的枚举…

    2022年7月21日
    13
  • win10启动文件丢失或损坏如何解决_miflash出现灾难性故障

    win10启动文件丢失或损坏如何解决_miflash出现灾难性故障原本昨天一切正确的电脑,今天打开电脑想新建一个文件夹的时候,竟无法成功,提示【一个意外错误使你无法创建该文件夹。如果你继续受到此错误,可以使用错误代码来搜索有关此问题的帮助。错误0x8000FFFF:灾难性故障】。小编真的是无奈啊,还能怎么办,上网搜索呗,出现的这个问题的磁盘还是之前的机械硬盘,以为已经把磁盘重新格盘,删除分区,重建分区,应该是没有问题了把,结果出现了几次问题都在这个机械硬盘里…

    2022年9月24日
    1

发表回复

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

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