首页 > 其他分享 >Vue-router的使用、路由守卫、localStorage

Vue-router的使用、路由守卫、localStorage

时间:2023-09-27 20:55:34浏览次数:39  
标签:Vue name localStorage userinfo 跳转 router 路由 页面

一、路由的使用

以后,就是组件的切换实现页面切换的效果 -----》 必须借助于vue-router来实现。

在App.vue中:

  <router-view/> ---> 显示组件 ---> 在router/index.js中配置

  <router-link :to="about_url"> ----> 做页面组件的跳转的

基本使用:

  1. 写一个页面组件

  2. 配置访问某个路径显示这个页面组件

1. 路由跳转

先在router/index.js中配置路由

1.1 html 中通过标签跳转

使用<router-link></router-link>进行跳转  

 - <router-link :to="about_url">
  <button>点我调到about-->标签的跳转</button>
  </router-link>

 -  <router-link to="/about">
  <button>点我调到about-->标签的跳转</button>
  </router-link>

使用如下:

 结果:

 当点击时,都会跳到About组件的页面

1.2 js中控制页面跳转

在script中通过:this.$router.push进行页面的跳转

template中:

 script中:

结果:

当点击按钮时,会直接跳转到About组件页面

2. 相关API

this.$router.push(path):相当于点击路由链接(路由返回当前的路由界面)

this.$router.replace(path):用新路由替换当前路由(但是不可以返回到前期路由界面 )

例如:

从跟路由跳转到about下:

 结果:

点击前:

 点击后:

this.$router.back():请求返回上一个记录路由(相当于网页上面的后退箭头)

this.$router.go(-1):请求返回上一个记录路由(和back作用一样)

this.$router.go(1):请求下一个记录路由

3. 页面跳转,携带数据

方式一: 在路由地址中通过 :?携带参数

  1. 配置路由:

 2. 跳转:

  - 1. 标签跳转:

  <router-link to="/userinfo?user_id=9">

  <router-link :to="{name:userinfo,query:{user_id:88}}">

例如:

结果:

   -2. js跳转

 结果:

方式二:/xx/:id/:name  

  1, 配置路由:

    {

      path:   '/info/:id/:name' ,

      name:  'info',

      component:  User

    }

  2 .跳转

   - 标签跳转 

   - js跳转

4. 多级路由

1. 新建一个首页HomeView,一个IndexView和OrderView

  - 

二、路由守卫

前置路由守卫,再进入路由之前做判断

写在router-index.js中,以后访问任意一个路由,都会执行这个代码

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

   console.log('前置路由守卫', to, from)

   // 要是访问lqz01,都不能跳转'

   // 如果没有登录,不能访问

   if (to.path == '/lqz/lqz01') {

       alert('你灭有权限')

  } else {

       next() # 继续访问

  }

1. 路由器的两种工作模式

1. 对于一个url来说,什么是hash值?

  #号及其后面的内容就是hash值

2. hash值不会包含在HTTP请求中,即:hash值不会带给服务器

3. hash模式:

  地址中永远带着#号,不美观。

  若以后将地址通过第三方手机app分享,若app校验严格,则地址会被标记为不合法

  兼容性较好

4. history模式:

  地址干净,美观。

  兼容性和hash模式相比略差

  应用部署上线时,需要后端人员支持,解决刷新页面服务端404的问题

三、localStorage系列

前端存储数据,可以存在哪?

  - 可以放到cookie中,cookie有过期时间,一旦过期就清理了(登录成功,有token,就存本地)

  - 可以放到localStorage,永久存储,除非使用代码删除,清理浏览器(可以实现不登录加购物车)

  -可以存到sessionStorage,关闭浏览器就没了

<template>
  <div class="home">
    <h1>操作localstorage,永久存储</h1>
    <button @click="addLocalstorage">增加</button>
    <button @click="getLocalstorage">查</button>
    <button @click="deleteLocalstorage">删除</button>
    <h1>操作sessiostorage,当前会话,关闭浏览器</h1>
    <button @click="addSessiostorage">增加</button>
    <button @click="getSessiostorage">查</button>
    <button @click="deleteSessiostorage">删除</button>


    <h1>操作cookie,有过期时间</h1>
    <button @click="addCookie">增加</button>
    <button @click="getCookie">查</button>
    <button @click="deleteCookie">删除</button>

  </div>
</template>

<script>

export default {
  name: 'HomeView',
  methods: {
    addLocalstorage() {
      var userinfo = {name: 'lqz', age: 19}
      localStorage.setItem('userinfo', JSON.stringify(userinfo))

    },
    getLocalstorage() {
      var userinfo = localStorage.getItem('userinfo')
      console.log(JSON.parse(userinfo).name)

    },
    deleteLocalstorage() {
      localStorage.clear()
      localStorage.removeItem('userinfo')

    },
    addSessiostorage() {
      var userinfo = {name: '彭于晏', age: 19}
      sessionStorage.setItem('userinfo', JSON.stringify(userinfo))

    },
    getSessiostorage() {
      var userinfo = sessionStorage.getItem('userinfo')
      console.log(JSON.parse(userinfo).name)

    },
    deleteSessiostorage() {
      sessionStorage.clear()
      sessionStorage.removeItem('userinfo')

    },
    addCookie() {
      // 需要借助于第三方  vue-cookies
      // cnpm install -S vue-cookies
      this.$cookies.set('name', '刘亦菲', '300s')

    },
    getCookie() {
      console.log(this.$cookies.get('name'))

    },
    deleteCookie() {
      this.$cookies.remove('name')

    },
  }
}
</script>

 

标签:Vue,name,localStorage,userinfo,跳转,router,路由,页面
From: https://www.cnblogs.com/Lucky-Hua/p/17734157.html

相关文章

  • Vuex的使用
    Vuex的使用在Vue中实现集中式状态管理的一个Vue插件,对Vue应用中多个组件的功效状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。使用步骤:1.新建store/index.js(可以随便命名) state中:存放数据mutations:当使用commit方法是会被触发actions:当使......
  • vue-day07
    vue-router使用以后用组件的切换来实现页面切换效果,必须借助于vue-router来实现vuex学过的:<router-view/>,显示组件,位置在router/index.js中配置,提供的<router-link:to="about_url">作业面跳转基本使用写一个页面组件配置访问某个路径显示这个页面组件路由跳转html......
  • 基于vue封装的Tag标签双击编辑单击选中可删除
    ......
  • 记录--Vue3 + Fabricjs 定制国庆专属头像
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助生在国旗下,长在春风里!国庆将至,采黎为大家带来定制头像2.0(国庆头像),让我们用代码的形式为祖国庆生!欢迎大家点赞收藏加关注哦前言想看效果或者想定制春节头像的小伙伴请直奔效果区域;想一睹定制头像2.0小工具的......
  • vue3项目结合antdesignvue封装form表单及校验
    效果图 完整代码1<scriptsetup>2import{defineProps,onMounted,reactive,ref,defineEmits}from'vue'3import{Card,Input,Select,DatePicker,FormItem,Form,Button}from'ant-design-vue'4import{useRuleChe......
  • vue3项目table表格动态表头生成+行数据合并
    这两处地方是动态的,由后端数据返回思路流程  1,后端返回数据二次处理  2,根据后端数据生成动态表头  3,利用antd的customRender与rowSpan设置行合并 完整代码<template><Table:data-source="dataSource":columns="columns":pagination="......
  • Vue3 - provide 提供的异步数据 inject 得到的数据 undefined 或 null
    如下所示,父组件(祖先组件)通过provide函数向所有后代组件传递prop。但是这两个Ref类型的数据最开始没有,需要等到onMounted初始化之后才有值。此时会遇到两个问题后代组件在setup函数中或者onBeforeMount等非常周期中调用,可能获取的是undefined或者null。传递响应式......
  • vue,用户可操作权限判断,数据创建人判断
    需求:需要判断登录用户是否有对应的操作权限,有则显示对应的操作入口。判断某物的创建人是否为当前用户,是则可进行删除或修改操作。  调用以下函数。userId为当前登录的用户id;   ......
  • vue3项目封装支持搜索,选中不可选,选中的数据项支持上下移动,删除的上下穿梭的树状穿梭框
     1,vue3代码1//这个是返回的所有的数据2constsourceItems=ref([])3//这是穿梭到下面的数据4consttargetItems=ref([])5//这是搜索字段6constsearchName=ref('')7//这两个要是后端返回,可不写8constex......
  • vue中的this.$emit方法
    作用:用于子组件中触发父组件方法并传值使用://子组件中<template><button@click="handleChildEvent">子组件中触发的事件</button></template><script>exportdefault{name:'ChildComponent',methods:{handleChildEven......