Vue总结第五天:vue-router

✿ 路由(器)目录:

□  vue中路由作用

□  vue-router基本使用

□  vue-router嵌套路由

□  vue-router参数传递

□  vue-router导航守卫

□  keep-alive

1、vue中路由:

(1)网页发展过程:后端路由阶段(后端渲染)【主要技术:jsp】-> 前后端分离阶段(前端渲染)【主要技术:ajax】-> 单页面富应用阶段(前端路由)【主要技术:vue-router】

(2)详细:https://blog.csdn.net/weixin_45630258/article/details/122145069

2、基本功能使用:

(1)❀使用模块化(创建Vue组件)机制编程:

▷第一步:创建Vue组件(作为路由映射的组件)

▷第二步:项目安装路由插件依赖:npm install vue-router –save

▷第三步:因为是模块化开发,需要导入 Vue 和 VueRouter,要调用Vue.use(VueRouter), 普通开发直接通过js标签的src引入vue-router插件即可            

▷第四步:配置路由映射创建和导出路有实例

▷第五步:挂载路由实例于Vue实例中

▷第六步:使用路由标签<router-link>和<router-view>

(一般还要搭配标签一起使用<router-view></router-view>,路由匹配到的组件将渲染在<router-view>标签所在的位置)

(2)路由的默认路径:

(3)demo展示路由使用:

//导入vue-router路由
import VueRouter from "vue-router";
import Vue from 'vue';
//通过vue的use方法安装路由器
Vue.use(VueRouter); // import Home from "../components/Home";
// import About from "../components/About";
// import User from "../components/User";
//路由懒加载,通过箭头函数导入组件
const Home = () => import('../components/Home');
const About = () => import('../components/About');
const User = () => import('../components/User');
const HomeNews = () => import('../components/HomeNews');
const HomeMessage = () => import('../components/HomeMessage');
const Profile = () => import('../components/profile'); //路由映射
const routes = [
{
path: '',
//使用重定向属性,定义打开默认为首页
redirect: '/home'
},
{
path: '/home',
component: Home,
meta: {
title: '首页'
},
//使用children属性,映射子路由关系
children: [
{
path: '',
redirect: 'news'
},
{
path: 'news',
component: HomeNews,
meta: {
title: '新闻'
}
},
{
path: 'message',
component: HomeMessage,
meta: {
title: '消息'
}
}
]
},
{
path: '/about',
component: About,
meta: {
title: '关于'
}
},
{
path: '/user/:userId',
component: User,
meta: {
title: '用户'
}
},
{
path: '/profile',
component: Profile,
meta: {
title: '档案'
}
}
]
//创建路由对象
const router = new VueRouter({
//routes属性(注意属性的拼写是routes,不是routers):映射关系,配置路由和组件的映射关系
routes,
//修改路径url,默认是hash值(会带上#)
mode: 'history'
}) //导出路由对象
export default router

(4)修改路由url:

① URL的hash (默认方式)

② HTML5的history:

(5)router-link 标签的属性:

to:用于指定跳转的路径,例如:<router-link to="/about">关于</router-link>

② tag:渲染成什么组件,例如:<router-link to="/home" tag="button">

replace:不会留下history记录, 所以指定replace的情况下, 后退键返回不能返回到上一个页面中,例如:<router-link to="/about" replace>关于</router-link>

④ active-class:设置 链接激活时使用的 CSS 类名(不过咱一般使用默认的类属性值:.router-link-exact-active, .router-link-active)

(6)路由代码跳转:除了使用router-link 标签,也可以通过监听事件,事件指向自定义的方法,在方法内:全局路由对象添加路径this.$router.push('/home');

   

3、动态路由(也是一种路由的参数传递方式):

4、Vue插件挂载到Vue实例后,相当于在Vue实例范围内都可以使用:

html拿到插件对象: $插件对象

js拿到插件对象: this. $插件对象

 

5、懒加载:

(1)什么是懒加载:

路由懒加载的主要作用就是将路由对应的组件打包成一个个的js代码块.

只有在这个路由被访问到的时候, 才加载对应的组件.

(2)es6懒加载方式(箭头函数):

const Home = () => import('../components/Home.vue')  

6、路由嵌套(子路由):

■ VueRouter的参数中使用 children 配置子路由:

//路由映射
const routes = [
{
path: '',
//使用重定向属性,定义打开默认为首页
redirect: '/home'
},
{
path: '/home',
component: Home,
meta: {
title: '首页'
},
children: [
{
path: '',
redirect: 'news'
},
{
path: 'news',
component: HomeNews,
meta: {
title: '新闻'
}
},
{
path: 'message',
component: HomeMessage,
meta: {
title: '消息'
}
}
]
}
]

7、路由传递数据【params、query】:

(1)方式一:使用params(动态路由):

配置路由格式: /router/:id,例如:

参数值会被设置到 this.$route.params,可以在对应的组件内使用。

■ 拼接动态路由变量的字符串:

<!-- 拼接字符串(to的属性值)-->
<router-link :to="/user/+userId" >用户</router-link> data() {
return{
//实现动态路由的效果(拼接路径)
userId: 'yushan'
}
},

(2)方式二:使用query:

配置路由格式: /router, 也就是普通配置

对象中使用querykey作为传递方式

参数会被设置到this.$route.querythis.$route.params

① 使用使用 router-link的to 属性:

<router-link
:to="{
path: '/profile',
query: {name: 'shanshan', age: '22', face: 'beauty'}
}"
>测试query</router-link>

② 监听事件,事件指向自定义的方法,在方法内:全局路由对象this.$router添加对象(参数有path、query):

methods: {
profileClick(){
this.$router.push(
{
path: '/profile',
query: {
name: 'yu',
love: 'money'
}
}
);
}
}

8、导航守卫:

(1) 导航守卫作用(例如:修改网页的标题):

● 首先,在钩子当中定义一些标题, 可以利用meta来定义

● 其次, 利用导航守卫,修改我们的标题.

 (2)全局前置守卫:

① 导航钩子的三个参数解析:

● to: 即将要进入的目标的路由对象.

● from: 当前导航即将要离开的路由对象.

● next: 调用该方法后, 才能进入下一个钩子.

(3)导航守卫补充:

■  补充一:如果是后置钩子, 也就是afterEach, 不需要主动调用next()函数.

■  补充二: 上面我们使用的导航守卫, 被称之为全局守卫.

□  路由独享的守卫.

□  组件内的守卫.

(4)其他:参考官网:导航守卫 | Vue Router (vuejs.org)

 

Vue总结第五天:vue-router (使用模块化(创建Vue组件)机制编程)、router-link 标签的属性、路由代码跳转、懒加载、路由嵌套(子路由)、路由传递数据、导航守卫)的更多相关文章

  1. Vue 路由懒加载, VueRouter一步完成Vue的路由懒加载 一行代码搞定懒加载

    Vue Router路由配置中的component里面配置即可 1 // 路由懒加载的方式加载组件 2 3 component: () => import('@/views/Detail'), ...

  2. vue组件懒加载

    vue2组件懒加载浅析 一. 什么是懒加载 懒加载也叫延迟加载,即在需要的时候进行加载,随用随载. 二.为什么需要懒加载 在单页应用中,如果没有应用懒加载,运用webpack打包后的文件将会异常的大, ...

  3. 在webpack中使用Code Splitting--代码分割来实现vue中的懒加载

    当Vue应用程序越来越大,使用Webpack的代码分割来懒加载组件,路由或者Vuex模块, 只有在需要时候才加载代码. 我们可以在Vue应用程序中在三个不同层级应用懒加载和代码分割: 组件,也称为异步 ...

  4. vue进阶:vue-router之导航守卫、路由元信息、路由懒加载

    1.导航被触发 2.在失活的组件里调用离开守卫:beforeRouteLeave —— 组件内守卫(离开组件). 3.调用全局的beforeEach守卫 —— 全局守卫(进入组件). 4.在重用组件里 ...

  5. Vue Router的懒加载路径

    单页应用产出的入口chunk大小随着业务的复杂度线性增加,导致后期加载速度越来越慢.后面就需要对不同路径下的模块进行拆分,打包到相应的chunk下,按需加载,找到chunk的大小.个数和页面加载速度的 ...

  6. vue懒加载 路由 router 的编写(resolve)

    如果用import引入的话,当项目打包时路由里的所有component都会打包在一个js中,造成进入首页时,需要加载的内容过多,时间相对比较长.当你用require这种方式引入的时候,会将你的comp ...

  7. 路由懒加载---Vue Router

    一.什么是懒加载? 懒加载也就是延迟加载或者按需加载,即在需要的时候进行加载. 二.为什么在Vue路由中使用懒加载? 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常 ...

  8. vue router的其他属性、 值的传递 、 懒加载

    路由的router-link标签有几个其他属性: 路由可以传递值(一般用作条目的id传递,之后用这个id从axios获取页面显示的数据 第一步: 定义路由以及值的属性名称(之后在跳转路由后页面里面获取 ...

  9. vue路由的懒加载

    一.懒加载 也叫延迟加载或者按需加载,即在需要的时候进行加载,   二.为什么要使用懒加载 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要 ...

随机推荐

  1. DTOJ 1561: 草堆摆放

    题目描述 FJ买了一些干草堆,他想把这些干草堆分成N堆(1<=N<=100,000)摆成一圈,其中第i堆有B_i数量的干草.不幸的是,负责运货的司机由于没有听清FJ的要求,只记住分成N堆摆 ...

  2. Linux图片查看软件ImageMagick安装

    在Linux中查看图片,这个需求是非常常见的.总不至于在集群中生成个图片,随便看下效果,也要用filezilla.winscp之类的远程文件传输工具导过来导过去吧,这样效率太低. Linux图片查看常 ...

  3. python8 标准模块和第三方模块

  4. mysql—mysql错误Every derived table must have its own alias解决

    Every derived table must have its own alias 这句话的意思是说每个派生出来的表都必须有一个自己的别名. 一般在多表查询时,会出现此错误. 因为,进行嵌套查询的 ...

  5. 汇编LED实验

    汇编语言点亮LED 拿到一款全新的芯片,第一个要做的事情的就是驱动其 GPIO,控制其 GPIO 输出高低电平. GPIO口是IO口的一个功能之一. 一.接下来的步骤离不开芯片手册: 1.使能所有时钟 ...

  6. Linux基础命令---mirror获取ftp目录

    mirror 使用lftp登录ftp服务器之后,可以使用mirror指令从服务器获取目录   1.语法       mirror [OPTS] [source [target]]   2.选项列表 选 ...

  7. IDE搬进浏览器里——JetBrains Projector

    发展 提起 JetBrains,你会想到什么?各路强大的 IDE,比如 Android Studio.IDEA.WebStorm--这些对于开发者来说耳熟能详的产品都出自这家公司,这些 IDE 的功能 ...

  8. 【Java 调优】Java性能优化

    Java性能优化的50个细节(珍藏版) 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: ...

  9. 【CentOS】检查系统是否安装OpenSSH

    CentOS7 远程联机 哔哩哔哩 萌狼蓝天 博客:https://mllt.cc 微信公众号:萌狼蓝天 检查与安装配置OpenSSH [CentOS7]检查系统是否安装OpenSSH yum -q ...

  10. minkube在deban10上的安装步骤

    环境准备: 所用机器为4c 16g  i3 4170   1t机械硬盘 系统 debian 10 安装docker 如果已经安装并配置好可直接跳过 安装ssl sudo apt-get install ...