【无标题】 Vue 路由库Router 【重点】 - 安装 - 基本使用 - 路由配置 - 路由模式 - 路由传递参数 - 路由内置对象 - 路由守卫

这篇具有很好参考价值的文章主要介绍了【无标题】 Vue 路由库Router 【重点】 - 安装 - 基本使用 - 路由配置 - 路由模式 - 路由传递参数 - 路由内置对象 - 路由守卫。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.0 课程介绍

  • Vue 路由库Router 【重点】

    • 安装
    • 基本使用
    • 路由配置
    • 路由模式
    • 路由传递参数
    • 路由内置对象
    • 路由守卫
  • Vue的内置API 【掌握】

    • ref

    • Vue.set

    • Vue.nextTick

    • Vue.filter

    • Vue.component

    • Vue.use

    • Vue.directive

1.0 Vue的路由Router 【重点】

1.1 路由作用

进行页面的跳转(相当于a标签),Vue是SPA单页面应用,他的页面跳转必须使用Vue-Router路由进行实现

1.2 路由的安装

vue create 项目名 创建一个带有Vue路由的项目

1.3 路由的使用

一级路由配置

  • 1 建(建大页面)
  • 2 配 (配置路由选项,一一对应)
  • 3 给出口及测试
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9hSG1kvr-1685015439810)(C:\Users\陈\AppData\Roaming\Typora\typora-user-images\1685015185815.png)]
如果你的页面需要进行路由显示,必须给出口 <router-view></router-view>,一级路由出口在App.vue页面,嵌套路由出口在父页面
路由出口:就是你页面需要渲染的位置
测试:在浏览器路径输入对应path


// 配置路由列表
const routes = [
  { path: '/', redirect: '/discover' }, // redirect: 重定向指定的路由(一级路由)
  // 配置一级路由
  { path: '/discover', component: DiscoverView },
  { path: '/my', component: MyView },
  { path: '/friend', component: FriendView },
]
  • 4 配置导航
    在你需要出现的页面设置你的出口
    如果 你需要跳转 就要用 触发事件来跳转
    【无标题】 Vue 路由库Router 【重点】 - 安装 - 基本使用 - 路由配置 - 路由模式 - 路由传递参数 - 路由内置对象 - 路由守卫
    【无标题】 Vue 路由库Router 【重点】 - 安装 - 基本使用 - 路由配置 - 路由模式 - 路由传递参数 - 路由内置对象 - 路由守卫
<router-link to="/discover">发现音乐</router-link>
<router-link to="/my">我的音乐</router-link>
<router-link to="/friend">关注音乐</router-link>

嵌套路由配置

  • 1 建 (建大页面)
  • 2 配 (配置路由选项,一一对应)
  • 3 给出口及测试
嵌套路由的出口在父页面 <router-view></router-view>

 {
    path: '/discover', component: DiscoverView,
    redirect: '/discover/toplist',  // redirect: 重定向指定的路由(嵌套路由)
    // 配置嵌套路由
    children: [
      { path: '/discover/recommend', component: RecommendView },
      { path: '/discover/toplist', component: ToplistView },
      { path: '/discover/playlist', component: PlaylistView },
    ]
  },
  • 4 配置导航
  <div class="discover">
    <!-- 嵌套路由的出口在父页面 -->
    <router-link to="/discover/recommend">推荐</router-link>
    <router-link to="/discover/toplist">排行榜</router-link>
    <router-link to="/discover/playlist">歌单</router-link>
    <!-- 嵌套路由的出口 -->
    <router-view></router-view>
  </div>

1.4 路由的模式 【重点】

【面试题】

  • hash模式 :地址栏带#, 底层实现的是用 onhashchange的一个方法

  • history模式 : 地址栏不带#,底层实现是用的h5的 pushState 方法

    区别:

    [1] : 地址栏一个带#,一个不带#

    [2] : 底层实现的原理不一样

    [3] : hash模式根history模式在开发中没有任何区别,但是在打包后的代码hash模式没有问题,history模式会存在刷新后页面丢失情况

    #解决办法: 只能让后端或者运维,对nginx代理服务器进行相应重定向的配置

1.5 路由的传参 【掌握】

  • query传参
// 路由提供了一个跳转的方法 this.$router.push('/路径')
// query配置项
1、路由跳转
this.$router.push({
    path:'/路径',
    query:{
        键名:键值,
        键名1:键值1,
    }
})
2、获取参数
this.$route.query

特点:	
	1、页面刷新参数依旧存储
    2、不能直接传递引用类型(可以用JSON.stringify 转成字符串【不推荐】)
  • params传参
// 路由提供了一个跳转的方法 this.$router.push('/路径')
// params配置项
1、路由跳转
this.$router.push({
    name:'路由名',
    params:{// 并且可以携带引用类型
        键名:键值,
        键名1:键值1,
    }
})
2、获取参数
this.$route.params

特点:
	1、页面可以携带引用类型
    2、刷新页面数据丢失(将刷新按钮禁用或者去除)
  • 动态路径传参
// 路由提供了一个跳转的方法 this.$router.push('/路径')
1、路由配置项中进行路径动态传参配置
{ path: '/my/:变量名', component: MyView },
2、路由跳转
this.$router.push({
    path:'/my/传入的值'
})
3、获取参数
this.$route.params

特点: 
	1、刷新页面后不会丢失数据
    2、动态路径必须携带参数

1.6 路由的两个内置对象【掌握】

  • $router

路由实例对象,他主要提供一些页面跳转的方法(他其实就等 === VueRouter)

​ push

​ go

replace

  • $route

路由信息对象,他主要提供当前页面的参数信息

params

query

path

1.7 路由守卫【理解】

全局前置路由守卫,监听路由变换,判断是有权限

router.beforeEach((to,from,next)=>{
    // to  你要去往哪里
    // from 你从哪里来
    // next 是个函数,如果直接调用就可以前往,如果传入路径,就前往指定页面
})

router.beforeEach((to, from, next) => {
  // 如果我跳转目标是我的,那我就让你重定向关注
  if (to.path == '/discover/recommend') {
    next({ path: '/discover/playlist' })
  } else {
    next()
  }

  // const token = localStorage.getItem('token123')
  // if (!token) {
  //   next({ path: '/login' })
  // } else {
  //   next()
  // }
})

2.0 Vue的内置API【掌握】

2.1 ref

作用:用于获取Dom节点,相当于元素选择器,如果你获取的是子组件,相当于获取到自组件的实例对象

<template>
	<div>
        #dom
        <span ref="ref的值1">dom节点</span>
        
        #子组件
        <son ref="ref的值2"></son>
    </div>
</template>

<script>
export default {
    methods:{
        init(){
            this.$refs.ref的值1  #DOM节点
            this.$refs.ref的值2  #子组件的实例对象
        }
    }
}
</script>
定义ref的值: 在父页面的子组件(或dom)标签上定义属性ref=“ref的值”
获取ref的值: 在js中通过this.$refs.ref的值 来获取子组件实例(或dom节点) 

2.2 Vue.set

他可以帮助我们重新挟持【绑架】数据,让数据具备响应式

理论【面试题】:因为Vue底层会对data里进行挟持,当初始状态对象没有这个属性,后期添加的属性没有被挟持,不具备响应式,通过Vue.set方法让数据重新挟持

import Vue from 'vue'
Vue.set(需要挟持的对象, "属性", "修改的值");this.$set(需要挟持的对象, "属性", "修改的值")

数组怎么改?

解决方法:数组的变更方法,这是被Vue重写的方法,可以让数组里的数据修改时也具备响应式

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

以上方法已经升级啦

2.3 Vue.nextTick

他是一个回调函数,帮你解决异步的问题,在下一次页面节点更新完毕后触发

import Vue from 'vue'
Vue.nextTick(()=>{
    // 下一次页面节点更新完毕后触发
})this.$nextTick(()=>{
    // 下一次页面节点更新完毕后触发
})

 created() {
    // 本身created是拿不到dom节点
    console.log(document.querySelector("#msg"));
    // 但是nextTick是下一次dom更新后触发 ,就相当于mounted时触发回调函数
    Vue.nextTick(() => {
      console.log(document.querySelector("#msg"));
    });this.$nextTick(() => {
      console.log(document.querySelector("#msg"));
    });
  }

2.4 Vue.filter

全局过滤器,注册的全局过滤器可以在任何页面使用

#main.js

Vue.filter('过滤器的名字',(参数)=>{
    // 一堆格式处理的逻辑
    return ’过滤后的结果‘
})

2.5 Vue.component

注册全局组件

// 全局组件
Vue.component('Counter', Counter)

2.6 Vue.use

使用插件,当插件是基于Vue.js写的,就需要use一下

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';

// 因为ElementUI底层是基于Vue.js写的 所以需要Vue.use使用一下
Vue.use(ElementUI);

2.7 Vue.directive

自定义的指令,可以根据自身需求自己定义文章来源地址https://www.toymoban.com/news/detail-463980.html

Vue.directive('指令名',{
    // 里面有很多的配置
    bind #只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
    inserted #被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)})

Vue.directive('overflow', {
  inserted: (dom, obj) => {
    // 截取 溢出隐藏
    dom.style.width = obj.value + 'px'
    dom.style.overflow = 'hidden'
    dom.style.whiteSpace = 'nowrap';
    dom.style.textOverflow = 'ellipsis';
  }
})

到了这里,关于【无标题】 Vue 路由库Router 【重点】 - 安装 - 基本使用 - 路由配置 - 路由模式 - 路由传递参数 - 路由内置对象 - 路由守卫的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3配置路由(vue-router)

    紧接上篇文章,vue3的配置与vue2是有所差别的,本文就讲述了如何配置,如果本文对你有所帮助请三连支持博主。 下面案例可供参考 使用npm命令进行安装 : npm install vue-router@4 完成后我们打开项目根目录下的 package.json 文件: 如下即为成功 这里创建 view目录,然后在view目录

    2023年04月12日
    浏览(59)
  • 5.10 Vue配置路由(vue-router)

    官方网站:https://v3.router.vuejs.org/zh/installation Vue Router 是 Vue.js 官方提供的一种路由管理工具,它可以帮助开发者管理 Vue.js 应用程序的路由,并实现路由跳转、参数传递、嵌套路由等功能。Vue Router 可以将一个单页面应用分成多个视图,在不同的路由之间进行切换,从而实现了

    2024年02月08日
    浏览(46)
  • 【Vue Router】Sensitive 与 strict 路由配置

    默认情况下,所有路由是不区分大小写的,并且能匹配带有或不带有尾部斜线的路由。例如,路由 /users 将匹配 /users 、 /users/ 、甚至 /Users/ 。这种行为可以通过 strict 和 sensitive 选项来修改,它们既可以应用在整个全局路由上,又可以应用于当前路由上: strict 为 true 时,将

    2024年02月17日
    浏览(29)
  • 关于uni-app与vue路由配置的不同,不使用uni.navigateTo接口跳转时,使用this.$router.push的踩坑经验

           目录 懵逼的一个小时    uni-app与vue路由配置的不同 非官方接口的另类写法 错误编写: 正确编写(只需写父组件即可,其他是多余):         之前用vue写router路由的时候,先配置一个路由表,然后再将配好的路由push到已有的组件里面,再通过RouterView/RouterV

    2024年02月09日
    浏览(51)
  • vue3+ts:安装路由(router)

           1.安装vue-router         vue3需要安装4.0以上版本         vue2最好安装4.0以下版本         安装命令:         安装完成后,在package.json中查看vue-router是否安装成功   src目录下新建一个router文件夹,在router文件夹里新建一个index.ts文件,代码如下: main.ts中代码

    2024年02月06日
    浏览(43)
  • vue3使用vue-router嵌套路由(多级路由)

    Vue3 嵌套路由的使用和 Vue2 相差不大,主要的区别是 Vue3 的路由实例化使用了 createApp() 方法,所以实例化路由时需要传入根组件。另外,Vue3 的路由对象除了包含 Vue2 中的导航守卫、导航钩子和解析守卫等功能外,还新增了 meta prop 和 route prop。 在使用嵌套路由时,建议将路由

    2024年02月03日
    浏览(49)
  • Vue3/ Vue3内 Vue-router Vue3路由 完整配置流程

    (1). yarn add vue-router (2) 创建 router/index.js 文件 (3) improt 引入 createRouter improt { createRouter  }  from \\\'vue-router (4) 调用 createRouter 并定义变量名  cosnt router = createRouter()  (5) export default 导出 router  export default router  (6) createRouter() 内添加对象 并定义 history    history: createMemoryHistory()

    2023年04月08日
    浏览(78)
  • Vue3 中路由Vue Router 的使用

    在编写vue里的SPA(Single Page Application单页面应用)时,我们始终绕不开路由的使用,vue-router4.0版里有一些重要更新,在这里分享给大家。 vue-router是vue.js官方给出的路由解决方案,能够轻松的管理SPA项目中组件的切换 Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让

    2024年02月02日
    浏览(36)
  • Vue-Router基本使用

    1 安装: vue2项目要安装vue-router@3版本 npm i vue-router@3 2 src下创建router目录,router文件夹下创建index.js 在vue.config.js中 配置src路径别名  3 在main.js中引入 4 在app.vue中配置  5 即可看到内容    

    2024年02月15日
    浏览(34)
  • vue使用路由router-view

    前言: router-view 与 NavMenu 导航栏的配合,在 web 应用中极为常见。其原理就是采用 SPA(single-page-application) 模式,就是只有一个 Web 页面的应用,通过 router 来控制页面的刷新和迭代。 提示: 以下示例基于 vue2.6.14 版本, vue-router3.5.2 版本, element-ui2.15.12 版本。 好了,废话不多

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包