IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue —— 路由相关知识点汇总 -> 正文阅读

[JavaScript知识库]Vue —— 路由相关知识点汇总

文章目录

  • 前言
  • 一、什么是路由
  • 二、路由的安装与使用
    • 1.安装
    • 2main.js 中进行挂载
    • 3.创建路由组件
  • 路由的传参
    • 1.params的类型
    • 2.Query参数的类型
    • 3.路由name
  • ?四、编程式路由
  • 五、缓存路由组件
  • 六、路由守卫
    • 1. 前置守卫
    • 2. 后置守卫
  • 总结

一、什么是路由?

Vue Router 是?Vue.js?的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。

? ?相关名词:

  • 路由:route??????? 一组key-v的对应关系(路径的改变对应的组件进行切换)
  • 路由器:router? ??多个路由需要路由器管理
  • 为了实现单页面应用(SPA)

? ?功能包括:

  • 嵌套路由映射
  • 动态路由选择
  • 模块化、基于组件的路由配置
  • 路由参数、查询、通配符
  • 展示由 Vue.js 的过渡系统提供的过渡效果
  • 细致的导航控制
  • 自动激活 CSS 类的链接
  • HTML5 history 模式或 hash 模式
  • 可定制的滚动行为
  • URL 的正确编码

二、路由的安装与使用

1.安装

npm i vue-router@3?? 安装3版本

在src根目录创建router目录,在目录中创建index.js,代码如下:

import Vue from 'vue';
//导入vue-router
import VueRouter from 'vue-router'

//应用插件
Vue.use(VueRouter)

//创建router规则对象
const routes = [
	
]
//创建router
const router = new VueRouter({
	routes
})

//导出router
export default router

2.main.js 中进行挂载

import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false

import router from './router'
new Vue({
  render: h => h(App),
  router,
}).$mount('#app')

3.创建路由组件

在 src 根目录下创建文件夹 pages

? ?说明:

  • 路由组件 pages
  • 一般组件 components
  • 路由组件多了两个属性:$route? ?$router

? ?路由规则相关书写方法:

// 引入vue
import Vue from 'vue';
// 导入 vue-router
import VueRouter from 'vue-router';

// 导入组件
import About from '../pages/About';
import ContactUs from '../pages/ContactUs';

import Persons from '../pages/Persons';

import Show from '../pages/Show'
// 应用插件
Vue.use(VueRouter);

// 创建router规则对象
const routes =[
{
    path:'/about',
    component: About
},
{
    path:'/contactus',
    component: ContactUs
},
{
    path:'/persons/:id/:realname',
    component:Persons,
    children:[
        {
            path:'show',
            component:Show
        }
    ]
}
]

// 创建router
const router = new VueRouter({
    routes,
})

// 导出router
export default router

? 使用路由??

该标签是一个vue-router中已经内置的组件,他会被渲染成一个<a>标签。

<router-link to="/about" active-class="hover">关于我们</router-link>

该标签会根据当前的路径,动态渲染出不同的组件,也就是组件的一个占位符。

<router-view></router-view>

? ?router-link属性:

  • to: 用于指定跳转的路径。
  • tag:tag可以指定<router-link>之后渲染成什么组件。
  • replace:replace不会留下history记录,所以指定replace的情况下,后退键返回不能返回到上一个页面中。
  • active-class:当<router-link>对应的路由匹配成功时,会自动给当前元素设置一个router-link-active的class,设置active-class可以修改默认的名称。

? ?mode属性??

  • hash模式:vue的路由默认是hash模式,地址栏后面会带一个#号。
  • history模式:mode=”history”/

区别:

1:hash ?兼容性好,history旧版本浏览器不兼容

2:hash? 带的#不会发送给服务器,history会发送给服务器,程序部署上线时需要后端人员支持,解决404刷新问题。配置一下apache或是nginx的url重定向,重定向到你的首页路由上。

? ?默认路径——也就是页面默认显示的内容??

{

??????? ? path: '/',

??????? ? redirect: '/about'

},

三、路由的传参

1.params的类型

在路由规则中配置路由格式:/router/:id/:title(动态路由)

设置props为true,接收数据

地址栏显示样式 ——? /xxx/xxx/1/张三

模板代码示例代码:

<router-link :to="`/message/show/${item.id}`">{{item.realname}}</router-link>

? 路由的props配置??

  • 第一种:props:{id:10,title:'ttt'}
  • 第二种:props:true? 该路由的params的参数,传递到该组件的props身上
  • 第三种 值为函数(下方query参数在演示)

props($route){

? return {id:$route.query.id,title:$route.query.title}

}

2.Query参数的类型

? ?字符串形式:

<li v-for="item in res">

<router-link :to="`/about/news/show?id=${item.id}&title=${item.title}`">{{item.title}}</router-link>

</li>

? ? 参数接收:

 methods:{
        id( ){
            return $route.query.id;
        },
        title( ){
            reutrn $route.query.title;
        }
    }

3.路由name

作用——简化路由的跳转 ,路由较长的使用名称

上述query跳转 推荐如下写法:

<router-link? :to="{name:'show',
query:{id:item.id,title:item.realname}}">{{item.realname}}
</router-link>

?四、编程式路由

当不是a标签时候,需要js代码进行跳转,我们就采用编程式路由。两种方式:replace和push。

1:字符串形式

this.$router.push(`/message/show/${item.id}/${item.realname}`);

2:对象形式

this.$router.push({

??????? ??????? ??????? ??????? ??????? name:'show',

??????? ??????? ??????? ??????? ??????? params:{

??????? ??????? ??????? ??????? ??????? ??????? id:item.id,

??????? ??????? ??????? ??????? ??????? ??????? title:item.title

??????? ??????? ??????? ??????? ??????? }

})

3:this.$router.back();//后退

??????? this.$router.forward();? //前进

??????? this.$router.go();?? //参数可以为数字,指定跳转到指定的页面中

五、缓存路由组件

作用——让组件不销毁,保持活跃。

相关参数:

Include 如果不写 让所有组件保持活跃不销毁。

多个组件使用数组,:include=”[‘组件1’,’组件2’]”

<keep-alive include=”组件名称”>
     <router-view></router-view>
</keep-alive>

路由的两个钩子函数:

//组件切换进来(组件显示状态)

activated() {

??????? ??????? ??????? this.myinter =? setInterval(()=>{

??????? ??????? ??????? ??????? ??????? console.log(1)

??????? ??????? ??????? ??????? },100);

},

//组件切换出去(后台显示)

deactivated() {

??????? ??????? ??????? clearInterval(this.myinter);

}

六、路由守卫

vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。这里有很多方式植入路由导航中:全局的,单个路由独享的,或者组件级的。

1.1?前置守卫

即对 整个单页应用(SPA) 中的所有路由都生效,初始化时执行、每次路由切换前执行。

代码:

//前置路由守卫

router.beforeEach((to,from,next)=>{

??????? // console.log(to);

??????? // console.log(from);

??????? if(to.name=="news" || to.name=="dt"){

??????? ??????? if(localStorage.getItem("token")=="zs"){

??????? ??????? ??????? next();

??????? ??????? }

??????? }else{

??????? ??????? next();

??????? }

})

? 函数中的参数:

  • to:进入到哪个路由去。
  • from:从哪个路由离开。
  • next:函数,决定是否展示你要看到的路由页面。

? meta属性:??

路由自定义信息:

用于标示路由是否需要判断守卫拦截,meta()(用于开发人员添加自定义信息)

2.2 后置守卫

全局后置守卫:初始化时执行、每次路由切换后执行

2.2.1?独享路由守卫

与全局路由守卫用法一致,但是只能针对一个路由使用。

2.2.2 组件内路由守卫

组件内守卫(组件内守卫是的两个方法是与生命周期函数平级的);

进入路由时调用,此时不能获取组件实例 this ,因为的当前守卫执行前,组件实例还没被创建。

? ?//通过路由规则,进入组件时调用??

beforeRouteEnter(to,from,next){

?next(vm => {

??? // 通过 `vm` 访问组件实例

? })

}

? ?//通过路由规则,离开组件时调用??

beforeRouteLeave(to,from,next){

}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:24:08  更:2022-10-17 12:24:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:47:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码