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

为什么需要懒加载?

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

vue异步组件
es提案的import()
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) }

非懒加载:

懒加载

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://www.cnblogs.com/shun1015/p/12306283.html

时间: 2024-10-11 21:53:41

vue项目实现路由按需加载(路由懒加载)的3种方式的相关文章

vue项目优化之按需加载组件-使用webpack require.ensure

vue项目优化之按需加载组件-使用webpack require.ensure 使用 vue-cli构建的项目,在 默认情况下 ,执行 npm run build  会将所有的js代码打包为一个整体, 打包位置是 dist/static/js/app.[contenthash].js 类似下面的路由代码 router/index.js  路由相关信息,该路由文件引入了多个 .vue组件 import Hello from '@/components/Hello' import Province

mybatis_12延时加载_懒加载

延时加载:也叫懒加载 2.1 延迟加载 延迟加载又叫懒加载,也叫按需加载.也就是说先加载主信息,在需要的时候,再去加载从信息. 在mybatis中,resultMap标签 的association标签和collection标签具有延迟加载的功能. 默认是即时加载,在配置完上面的一系列信息之后,只要打开总开关就是懒加载 总开关: 2.2 案例: Mapper.java     Mapper.xml UserMappler.xml   OrdersMapper.xml   测试 配置懒加载   原文

ios UI加载xib文件到控制器的两种方式(MS)

X-code6.3 创建xib文件 加载xib文件到控制器的两种方式(MS) // 1.第一种方式 //    NSArray * array = [[NSBundle mainBundle]loadNibNamed:@"cell" owner:nil options:nil]; //    MyTableViewCell * cell = [array firstObject]; 其中cell为新建的xib文件名 // 2.第二种方式 UINib * nib = [UINib nib

网站优化--图片的预加载与懒加载(上)

1.延迟加载即懒加载,主要目的是作为服务器前端的优化,减少请求数或延迟请求数,在一些图片非常多的网站中非常有用,当图片位置进入到可视区的时候才会被加载,这样对于含有很多 图片的比较长的网页来说,可以加载的更快,并且还能节省服务器带宽 最常用的方式是:监控滚动条的高度,当滚动条高度和可视区高度之和小于图片位置距离页面的高度时会被加载 2.预加载:在查看前面张图片的时候加载后面的图片,在提升用户体验的同时会增加服务器的压力 常用方式:创建image对象,通过src属性加载url资源,当资源加载完成后

图片预加载与懒加载

预加载与懒加载,我们经常经常用到,这些技术不仅仅限于图片加载,我们今天讨论的是图片加载: 一.什么是图片预加载与懒加载: 图片预加载:顾名思义,图片预加载就是在网页全部加载之前,提前加载图片.当用户需要查看时可直接从本地缓存中渲染,以提供给用户更好的体验,减少等待的时间.否则,如果一个页面的内容过于庞大,没有使用预加载技术的页面就会长时间的展现为一片空白,这样浏览者可能以为图片预览慢而没兴趣浏览,把网页关掉,这时,就需要图片预加载.当然这种做法实际上牺牲了服务器的性能换取了更好的用户体验. 图

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

当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的 异步组件 和 Webpack 的 code splitting feature, 轻松实现路由组件的懒加载. 我们要做的就是把路由对应的组件定义成异步组件 const Foo = resolve => { // require.ensure 是 Webpack 的特殊语法,用来设置 code-split

关于Hibernate中立即加载和懒加载的区别

当1表与2表之间有OneToMany(类似)关系时候, 对于1表的实体类,设置FetchType=EAGER时(也就是立即加载),取1表数据,对应2表的数据都会跟着一起加载,优点不用进行二次查询. 缺点是严重影响数据查询时间,查询速度慢. FetchType=LAZY(也就是懒加载),此时查询时间大大缩短,缺点是查询表1的数据时,查询不到2表的数据. 不会主动取查询2表的数据.

图片预加载和懒加载

1.什么是预加载? 提前加载图片,当用户需要查看时可直接从本地缓存中渲染. 2:什么是懒加载? 延迟加载图片,当用户需要的时候再去加载图片 当我们访问一些类似电商网站,遇到图片很多情况下,需要浏览器去下载这些图片,遇到网速比较慢的时候,用户等待的时间特别长,造成很不好的用户体验.这样的话,就有可能导致一部分的用户没有耐心,而丢失这部分用户. 图片的预加载是提升用户体验而损失性能的一种做法,而懒加载的性能就比较好,所以将两个结合起来放到web程序中是一种不错的选择. 预加载 Image 对象在客户

(可视区域加载)图片懒加载实现原理

参考文章:http://www.cnblogs.com/xiaohuochai/p/4859485.html http://www.cnblogs.com/xiaohuochai/p/4859899.html http://www.cnblogs.com/vajoy/p/4263291.html 定义 图片延迟加载也称为懒加载,延迟加载图片或符合某些条件时才加载某些图片,通常用于图片比较多的网页.可以减少请求数或者延迟请求数,优化性能. 呈现形式 [1]延时加载,使用setTimeout或set

[Asp.NET MVC+EasyUI] TreeGrid全部加载及懒加载示例

本篇文主要对EasyUI中TreeGrid组件的使用进行演示.对于正在学此组件的童鞋,不防花个几分钟看一下.本文主要演示:TreeGrid的简单应用.懒加载方法.控件数据格式. TreeGrid组件是由DataGrid集成而来,可以使行与行之间存在父子关系,是一种树形网格组件. 1. 创建简单示例 通过post方式调用后端数据,将数据展示到前端,具体代码如下: 1.1 前端代码 <html xmlns="http://www.w3.org/1999/xhtml"> <