首页 > 其他分享 >Vue-router、localStorange

Vue-router、localStorange

时间:2023-10-08 19:14:46浏览次数:26  
标签:Vue name localStorange userinfo 跳转 push router 路由

Vue-Router的使用

作用:
	借助于router可以实现单页面组件之间的跳转

this.router的一些使用方法:
    this.$router.push(path): 相当于点击路由链接(可以返回到当前路由界面)
    this.$router.replace(path): 用新路由替换当前路由(不可以返回到当前路由界面)
    this.$router.back(): 请求(返回)上一个记录路由
    this.$router.go(-1): 请求(返回)上一个记录路由
    this.$router.go(1): 请求下一个记录路由
        
基本使用:
    -1、页面之间的跳转
    -2、在router文件夹----->index.js----->router数组中加入路由即可

路由跳转

1、html中通过标签跳转:
	需要使用router-link:
    -1、使用普通属性
        <router-link to="/about"><button>点我跳转到关于页面</button></router-link>
    -2、使用属性指令:
    	<router-link :to="about_urls"><button>点我跳转到关于页面</button></router-link>
         data() {
            return {
                about_urls: "/about"
            }
2、通过使用JS来绑定:
  # 方式一:
     <button @click="abouts">点我跳转到关于页面</button>
   	 JS:
        methods: {
        abouts() {
          this.$router.push('/about')
        }
      # 方式一:直接放地址形式
      	this.$router.push('/about')
      # 方式二:对象形式
      	this.$router.push({name: 'about'})
      	this.$router.push({path: '/about'})

页面跳转,携带数据

# 方式一:在地址中携带 "?" 后面
  标签跳转:
    <router-link to="/userinfo?user_id=9"><button>点我传递参数</button></router-link>
    <hr>
    <router-link :to="{name: 'userinfo', query: {user_id: 99}}"><button>点我传参数</button></router-link>
  JS跳转:
    <button @click="routerss">点我携带数据跳转</button>
    <button @click="routes">点我携带数据跳转</button>
取值的时候:
	this.$route.query.user_id
    
# 方式二:127.0.0.1:8000/xxxx/mmmmmm类型:
  	配置路由:
        {
        path: '/userinfo/:id/:name',
        name: 'userinfo',
        component: UserDetail
   	 },
	跳转的时候: 
    	-标签跳转: 
        	<router-link to="/userinfo/88/lqz">
            <router-link :to="{name:userinfo,params:{id:88,name:lqz}}">
        -js跳转
            this.$router.push("/userinfo/88/lqz")
            this.$router.push({name:userinfo,params:{id:88,name:lqz}})
            
   取值的时候:
		this.$route.params.id

代码

<template>
  <div>
    <h1>这是首页</h1>
    <router-link to="/about">
      <button>点我跳转到关于页面</button>
    </router-link>
    <hr>
    <button @click="abouts">点我跳转到关于页面</button>
    <hr>
    <h1>地址中携带数据</h1>
    <router-link to="/userinfo?user_id=9">
      <button>点我传递参数</button>
    </router-link>
    <hr>
    <router-link :to="{name: 'userinfo', query: {user_id: 99}}">
      <button>点我传参数</button>
    </router-link>
    <hr>
    <h1>使用JS跳转</h1>
    <button @click="routerss">点我携带数据跳转</button>
    <hr>
    <button @click="routes">点我携带数据跳转</button>
  </div>
</template>

<script>

export default {
  name: "HomeView",
  data() {
    return {}
  },
  methods: {
    abouts() {
      this.$router.push('/about')
    },
    routerss() {
      this.$router.push('/userinfo?user_id=78')
    },
    routes() {
      this.$router.push({name: 'userinfo', query: {"user_id": '100'}})
    }
  }
}
</script>

多级路由

# 1 新建一个首页HomeView,一个IndexView和OrderView
	-构建出骨架,以后想点击只有这个位置变,就放一个 <router-view/>
    
   	-IndexView和OrderView正常写
    
# 2 定义多级路由
	 {
        path: '/',
        name: 'home',
        component: HomeView,
        children: [ //通过children配置子级路由
            {
                path: 'index', //此处一定不要写:/news
                component: IndexView
            },
            {
                path: 'order',//此处一定不要写:/message
                component: OrderView
            }
        ]
    },
    
# 3 路由跳转:js,html

路由守卫

router.beforeEach((to, from, next) => {
    // to 去哪个路由-->对象
    // from 从哪来--->对象
    // next()--->跳过去了
    console.log('前置路由守卫', to, from)
    console.log(to)
    next()

})

//全局后置路由守卫————初始化的时候被调用、每次路由切换之后被调用
router.afterEach((to, from) => {
    console.log('后置路由守卫', to, from)
    document.title = to.meta.title || 'lqz系统'
})

路由器的两种工作模式

1 对于一个url来说,什么是hash值?—— #及其后面的内容就是hash值。
2 hash值不会包含在 HTTP 请求中,即:hash值不会带给服务器。
3 hash模式:
    地址中永远带着#号,不美观 。
    若以后将地址通过第三方手机app分享,若app校验严格,则地址会被标记为不合法。
    兼容性较好。
4 history模式:
    地址干净,美观 。
    兼容性和hash模式相比略差。
    应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题

localStorage系列

前段存储数据可以存在哪里?
    -1、可以存在cookie中,但是cookie有过期时间,一旦过期就会立即清除掉数据
    -2、可以存在localStorage中,永久存储,除非使用代码删除或者清除浏览器
    -3、可以存到sessionStorage中,关闭浏览器数据销毁

保存数据 and 查看数据and 销毁数据

<template>
  <div>
    <h1>Local Storage</h1>
    <button @click="saveLocalStorage">保存</button>
    <button @click="getLocalStorage">查看</button>
    <button @click="deleteLocalStorage">删除</button>
    <hr>
    <h1>Session Storage</h1>
    <button @click="saveSession">保存</button>
    <button @click="getSession">查看</button>
    <button @click="deleteSession">删除</button>
    <hr>
    <h1>Coolie</h1>
    <button @click="saveCookie">保存</button>
    <button @click="getCookie">查看</button>
    <button @click="deleteCookie">删除</button>
  </div>
</template>
<script>
export default {
  data() {
    return {};
  },
  methods: {
    saveLocalStorage() {
      let userinfo = {"username": "yang", "password": "123456"}
      localStorage.setItem('userinfo', JSON.stringify(userinfo))
    },
    getLocalStorage() {
      let res = JSON.parse(localStorage.getItem("userinfo"))
      console.log(res)
    },
    deleteLocalStorage() {
      localStorage.clear()
      localStorage.removeItem("username")
    },
    saveSession() {
      let userinfo = {"username": "yang", "password": "123456"}
      sessionStorage.setItem('userinfo', JSON.stringify(userinfo))
    },
    getSession() {
      let res = JSON.parse(sessionStorage.getItem("userinfo"))
      console.log(res)
    },
    deleteSession() {
      sessionStorage.clear()
      sessionStorage.removeItem("username")
    },
    saveCookie() {
      // 使用之前需要先安装npm install vue-cookies --save
      // 在main.js中导入
      // import Vue from 'vue'
      // import VueCookies from 'vue-cookies'
      // Vue.use(VueCookies)
      this.$cookies.set('username', 'yang')
    },
    getCookie() {
      console.log(this.$cookies.get('username'))
    },
    deleteCookie() {
      this.$cookies.remove('username')
    },
  }
}
</script>

Vue3的介绍

# tree-shaking是一种消除死代码的性能优化理论
# TypeScript 
	-javascript:坑---》填坑---》弱类型
    -typeScript:强类型语言

组合式api和配置项api

# vue3 兼容vue2---》vue2的内容,vue3完全适用
# vue3 不建议这么用了,建议使用组合式api,不建议使用配置项api
	data(){}
    mehtods:{}
        
        
        
 # 配置项api定义一个组件
	export default {
        data(){
            name:ss
        }
    	mehtods:{
            console.log(name)
        }
    }
    
 # 组合式api
	setup{
        var name =ss
        console.log(name)
    }

标签:Vue,name,localStorange,userinfo,跳转,push,router,路由
From: https://www.cnblogs.com/chao0308/p/17749897.html

相关文章

  • vue封装搜索组件,自定义elment搜索组件
    组件案例<template><divclass="dialog-search"><el-form:inline="true"ref="ruleForm":model="formInline"class="demo-form-inlinetop-screen"><divclass="to......
  • vue3子组件页面不更新
    写在前面这是一次滑铁卢,整整找了半天时间...项目结构我有一个组件A,A中定义了一个属性data:Object,A中将data赋值给了一个reactive类型的对象R。页面中均使用R。现象描述当调用A的父组件P更新了A的data后,A的页面不更新问题分析P更新A后,A是一个新的对象,但R仍然引用旧对象,导致产......
  • 创建Vue实例方式一(基于核心包)
    基于核心包创建Vue实例核心包就是Vue.jsvue2地址:https://v2.cn.vuejs.org/vue3地址:https://cn.vuejs.org/注意开发版本和生产版本,学习建议使用开发版本  ......
  • vue3绘制和回显多边形
    参考了这个:https://blog.csdn.net/weixin_42178050/article/details/130012696将其从vue2的语法改成了vue3,效果如下:代码如下:<template><divclass="app-container"><divclass="d-flexj-center"><el-container><el......
  • vue前端接收数组;
    后端 $this->assign('info',$expert);如果是数组/对象,需要在接收页面这样写:在data内变量赋值: info: <?phpechojson_encode($info);?>  另外有其他写法:  $this->assign('info',1); 如果是单个值:在data内变量赋值: info: ‘{$info}’翻译搜索......
  • 【vue2】实现长按图片保存功能
    <span:class="[$style.wxCode,isShow&&$style['show']]"@touchstart="touchStart()"@touchend="touchEnd()"></span>ps.span元素为图片元素,我这里把图片设置为元素背景......
  • Vue的生命周期、钩子函数
    Vue的生命周期:一个Vue实例从创建到销毁的整个过程生命周期四个阶段:创建、挂载、更新、销毁①创建阶段:初始化工作,进行数据的响应式处理,把普通数据变成响应式数据(数据变,视图跟着变)②挂载阶段:渲染模板。结合数据与模板进行渲染③更新阶段:用户可以通过页面上的按钮等修改数......
  • vue~全局插件和全局方法的注册
    本文介绍如何在vue中定义插件,注册插件和使用插件插件目录/src/plugins插件入口文件/src/plugins/index.jsimportcachefrom'./cache'importmodalfrom'./modal'//安装默认插件,在main.js中引入,通过Vue.use()使用它,因为index.js里使用exportdefault导出,所有在main.js......
  • 直播平台制作,vue-全局过滤器(时间,年月日,一千加逗号处理)
    直播平台制作,vue-全局过滤器(时间,年月日,一千加逗号处理)exportconstformatYmd=(date)=>{ lettime=newDate(date)  lety=time.getFullYear() letm=time.getMonth()+1 letd=time.getDate()  return[y,m,d].map((v)=>String(v).padStart(2,'0'......
  • 去掉Vue语法检查
    注释掉createLintingRule方法里面的东西constcreateLintingRule=()=>({//test:/\.(js|vue)$/,//loader:'eslint-loader',//enforce:'pre',//include:[resolve('src'),resolve('test')],//options:{/......