一、配置路由懒加载

懒加载的原因:

因为组件不断的增加,项目的路由会越来越多

打包后的文件越来越大,当超过IO读写的瓶颈时,项目加载就很慢了

所以需要将路由文件分离,在被调用时进行加载

分析路由index.js文件:

import Vue from 'vue';
import Router from 'vue-router';
import Home from "../components/Home";
import About from "../components/About";
import User from "../components/User"
; Vue.use(Router); const routerList = [
/* 重定向首页路由配置 */
{
path : '', /* 缺省值默认指向 '/' */
redirect : '/home',
},
{
path : '/home', /* 为什么这里是path不是url? 因为完整的url还包括 项目根url(协议头 + 域名(或者IP地址) + 端口号 + 项目根名称路径(可选)) */
name : 'home', /* 名字可以不加 */
component : Home
},
{
path : '/about',
name : 'about',
component : About
},
{
path : '/user/:username', /* 动态路径:冒号+字符 */
name : 'user',
component : User
}
]
const router = new Router({
routes : routerList,
mode : 'history',
});
export default router;

可以看到如果有多少组件,上面就必须import多少

那么项目运行读取此文件必然需要读完import内容

如果import内容太多,将会导致执行效率降低

懒加载配置方式:

三种方式

import Vue from 'vue';
import Router from 'vue-router'; Vue.use(Router); /* 方式一 */
const Home = resolve => {
require.ensure(
['../components/Home.vue'],
() => resolve(require('../components/Home.vue'))
)
}
/* 方式二 */
const About = resolve => {
require(['../components/About.vue'],resolve);
}
/* 方式三 */
const User = () => import('../components/User.vue'
); const routerList = [
/* 重定向首页路由配置 */
{
path : '', /* 缺省值默认指向 '/' */
redirect : '/home',
},
{
path : '/home', /* 为什么这里是path不是url? 因为完整的url还包括 项目根url(协议头 + 域名(或者IP地址) + 端口号 + 项目根名称路径(可选)) */
name : 'home', /* 名字可以不加 */
component : Home
},
{
path : '/about',
name : 'about',
component : About
},
{
path : '/user/:username', /* 动态路径:冒号+字符 */
name : 'user',
component : User
}
]
const router = new Router({
routes : routerList,
mode : 'history',
});
export default router;

二、路由嵌套

在当前路由下继续跳转访问子内容

/home
-> /home/module
-> /home/module/function1
-> /home/module/function2
-> /home/module/function3
... ...

所以我们不难看出这是一个层级关系

配置方式【router/index.js】:

import Vue from 'vue';
import Router from 'vue-router'; Vue.use(Router); /* 方式一 */
const Home = resolve => {
require.ensure(
['../components/Home.vue'],
() => resolve(require('../components/Home.vue'))
)
}
/* 方式二 */
const About = resolve => {
require(['../components/About.vue'],resolve);
}
/* 方式三 */
const User = () => import('../components/User.vue'); const News = () => import('../components/home/News');
const Messages = () => import('../components/home/Messages'
); const routerList = [
/* 重定向首页路由配置 */
{
path : '', /* 缺省值默认指向 '/' */
redirect : '/home',
},
{
path : '/home', /* 为什么这里是path不是url? 因为完整的url还包括 项目根url(协议头 + 域名(或者IP地址) + 端口号 + 项目根名称路径(可选)) */
name : 'home', /* 名字可以不加 */
component : Home, /* 使用懒加载后component这里高亮显示 */
children : [ /* 设置子路由 */
{
path : 'news', /* 等同于 /home + /news = /home/news 这里不需要再加斜杠了 */
component : News
},
{
path : 'messages'
,
component : Messages
}
]

},
{
path : '/about',
name : 'about',
component : About
},
{
path : '/user/:username', /* 动态路径:冒号+字符 */
name : 'user',
component : User
}
]
const router = new Router({
routes : routerList,
mode : 'history',
});
export default router;

对应的目录结构尽量清晰明了

对应的给首页组件处理:

注意这里的to属性路由地址一定是写完整的!!!

<template>
<div>
<h3>这是首页Home组件</h3>
<p>
首页Home组件的内容 <br>
<router-link to="/home/news">新闻列表</router-link>
<router-link to="/home/messages">消息列表</router-link>

</p>
<router-view></router-view>
</div>
</template> <script>
export default {
name: "Home"
}
</script> <style scoped> </style>

同样子组件也可以配置默认路径,实现一打开就展示某一部分的内容

import Vue from 'vue';
import Router from 'vue-router'; Vue.use(Router); /* 方式一 */
const Home = resolve => {
require.ensure(
['../components/Home.vue'],
() => resolve(require('../components/Home.vue'))
)
}
/* 方式二 */
const About = resolve => {
require(['../components/About.vue'],resolve);
}
/* 方式三 */
const User = () => import('../components/User.vue'); const News = () => import('../components/home/News');
const Messages = () => import('../components/home/Messages'); const routerList = [
/* 重定向首页路由配置 */
{
path : '', /* 缺省值默认指向 '/' */
redirect : '/home',
},
{
path : '/home', /* 为什么这里是path不是url? 因为完整的url还包括 项目根url(协议头 + 域名(或者IP地址) + 端口号 + 项目根名称路径(可选)) */
name : 'home', /* 名字可以不加 */
component : Home, /* 使用懒加载后component这里高亮显示 */
children : [ /* 设置子路由 */
{
path : '', /* 这个缺省默认/home */
redirect : 'news'

},

{
path : 'news', /* 等同于 /home + /news = /home/news 这里不需要再加斜杠了 */
component : News
},
{
path : 'messages',
component : Messages
}
]
},
{
path : '/about',
name : 'about',
component : About
},
{
path : '/user/:username', /* 动态路径:冒号+字符 */
name : 'user',
component : User
}
]
const router = new Router({
routes : routerList,
mode : 'history',
});
export default router;

【Vue】Re16 Router 第三部分(懒加载、子路由)的更多相关文章

  1. mybatis(三)懒加载

    懒加载的好处: 所谓懒加载(lazy)就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为 ...

  2. 「Vue.js」Vue-Router + Webpack 路由懒加载实现

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

  3. vue项目性能优化(路由懒加载、gzip加速、cdn加速)

    前端工程性能优化一说意义深远悠长,本章主要介绍除了一些基础优化外如何实行路由懒加载.Gzip加速.CDN加速,让网页飞的快一些. 基础优化 老生常谈的一些: 不要在模板中写复杂的表达式 慎用watch ...

  4. vue(组件、路由)懒加载

    const Login = resolve => require(['@/components/Login'], resolve) //就不用import了 Vue.use(Router) le ...

  5. VUE项目性能优化实践——通过懒加载提升页面响应速度

    本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 最近我司因业务需求,需要在一个内部数据分析平台集成在线Excel功能,既然我 ...

  6. Vue常规后台系统,路由懒加载实现基于菜单数据并解耦

    路由依赖菜单 场景:文件名与路由组件名完全一致(随便大小写均可) 菜单使用一套,路由又存在一套,这样就很不舒服,于是做了如下处理: 尝试不用懒加载发现有难度,使用懒加载就很轻松了 data.js ex ...

  7. 用apicloud+vue的VueLazyload实现缓存图片懒加载

    <script src="../../script/vue-lazyload.js"></script><img v-lazy="remot ...

  8. vue 打包体积过大 实现懒加载 ????

    import Vue from ‘vue’ import Router from 'vue-router' //把路由对应的组件定义成异步组纪检 const hello = resolve => ...

  9. vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、mockjs用法、路由懒加载三种方式

    不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p> ...

  10. vuex存取token,http简单封装、模拟登入权限校验操作、路由懒加载的几种方式、vue单页设置title

    1.config index.js下面的跨域代理设置: proxyTable: { '/api': { target: 'http://xxxx', //要访问的后端接口 changeOrigin: ...

随机推荐

  1. react兄弟之间通信

    写入组件 import React, { Component } from 'react'//下面二个就是兄弟关系的组件 import Cmp1 from '../Child/Cmp1' import ...

  2. ABC330

    D 记录每一行,每一列有多少个 o,然后统计答案即可. code E 想到 \(mex^{i \le n}_{i = 1} a_i \le n\) 这整个题就可做了(赛时因为没想到这个,痛失 \(47 ...

  3. ES 关于 remote_cluster 的一记小坑

    最近有小伙伴找到我们说 Kibana 上添加不了 Remote Cluster,填完信息点 Save 直接跳回原界面了.具体页面,就和没添加前一样. 我们和小伙伴虽然隔着网线但还是进行了深入.详细的交 ...

  4. #define 用法解法

    宏的优点是能整理代码 缺点是宏替换来的代码需要人工解除宏后才能暴漏源代码 改底层时候是需要解一解的 它可以做到main函数中只有一个宏字母 这个宏定义时候,定义成了几个函数的源代码 所以main里面就 ...

  5. 白话理解和使用DOCKER VOLUME

    Docker使用Volume来管理宿主机和容器内数据的映射  什么是数据卷(Volume)Docker镜像被存储在一系列的只读层中.当我们创建一个容器时,Docker会读取镜像(只读),并在其顶部添加 ...

  6. 用typescript实现一个event bus

    一个简单event bus的实现 发布订阅者模式 type emitKey = number | string | symbol; type func = (...args: any) => v ...

  7. linux解压缩,复制,重命名,删除,目录按更新时间排序,grep递归搜索文档

    linux解压缩,复制,重命名,删除,目录按更新时间排序,grep递归搜索文档 1.解压缩压缩命令 zip -p -r mymail-1026.zip mymail/ 解压命令 unzip mymai ...

  8. Nivdia向量数据库图检索最新标杆——CAGRA

    本文连接:https://wanger-sjtu.github.io/CARGA/ CAGRA 是 N社在RAFT项目中 最新的 ANN 向量索引.这是一种高性能的. GPU 加速的.基于图的方法,尤 ...

  9. Libgdx游戏开发(4)——显示中文文字

    原文: Libgdx游戏开发(4)--显示中文文字-Stars-One的杂货小窝 本文代码示例采用kotlin代码进行讲解,且需要有libgdx入门基础 这里主要介绍关于在Libgdx显示文字的2种方 ...

  10. yolov1-yolov5 网络结构&正负样本筛选&损失计算

    学习yolo系列,最重要的,最核心的就是网络模型.正负样本匹配.损失函数等三个方面.本篇汇总了yolov1-yolov5等5个版本的相关知识点,主要看点是在yolo框架搭建.初学者可以通过相关篇章搭建 ...