Vue——vuex使用、Router使用、localstorage、sessionstorage和cookie

这篇具有很好参考价值的文章主要介绍了Vue——vuex使用、Router使用、localstorage、sessionstorage和cookie。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vuex使用

# vuex :状态管理器---》存数据(变量)的地方,所有组件都可以操作
在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信
<h1>1 vuex的使用 基本使用(操作state的数据)</h1>
    购物车商品数量:{{ $store.state.num }}

methods:{
    handleAdd(){
      // 1 直接操作
      // this.$store.state.num += 1
      // 2 正统方式,通过dispatch触发actions
      this.$store.dispatch('add',2)  //add 必须是action中得函数
    },
    add(name) {
      //1 直接操作
      // this.$store.state.goods.push(name)

      //2 正常套路
      this.$store.dispatch('addShopping', name)
    }
  },

export default new Vuex.Store({
    state: {
        num: 10,
        goods: [],
    },
    mutations: {
        mAdd(state,count){
            state.num += count
        },
        addShopping(state, name) {
            state.goods.push(name)
        }
    },
    actions: {
        // 至少要有一个参数,context上下文对象,触发mutations中函数执行,或者直接该state中数据都可以
        add(context,count){
            // 使用commit,触发mutations中得函数
            context.commit('mAdd',count)  // 会触发mutations中得mAdd的执行
        },
        addShopping(context, name) {
            // 这里起ajax请求,检查name库存够不够
            //假设库存不够,弹个不够的消息
            // alert('库存不够了')
            // return
            context.commit('addShopping', name)
        }
    },
})

Vue——vuex使用、Router使用、localstorage、sessionstorage和cookie文章来源地址https://www.toymoban.com/news/detail-477283.html

Router使用

# 提倡单页面应用,需要做页面的跳转---->借助于Router实现页面组件的跳转

# 1 简单使用
	页面跳转
    写个页面组件
    在router--->index.js--->routes数组中加入一个路由即可
    
# 2 组件中实现页面跳转
	两种方式
    	方式一:使用 router-link 标签,to=地址
        	<router-link to="/about"></router-link>
        方式二:js控制
        	this.$router.push('/about')
            
# 3 路由跳转时,可以使用对象
	1 通过对象跳转路由name形式:<router-link :to="{name:'about'}"></router-link>
    2 通过对象跳转路由path形式:<router-link :to="{path:'/about'}"></router-link>
    3 对象中可以有query属性,是个对象类型,会把里面的key-value拼到路径后面
    4 在另一个页面中取出地址栏中数据:console.log(this.$route.query)
    5 这种传递方式和 3  一样 <router-link to="/about?name=lqz&age=19">
    6 注意区分:
    	this.$route:// 对象 表示当前路由对象,里面有当前路径的地方,携带的参数
        this.$router:// 对象,new VueRouter的镀锡,它主要用来做路由跳转
        #### 例如
        console.log(this.$route.query)  // 地址栏中的数据
    	console.log(this.$route.query.name)  
   	7 路径中分割出参数
    	配置:
        	{
                path:'/detail/:pk',
                name: 'detail',
            	component: DetailView
            },
        在路由中取:
        	this.$route.params.pk
    8 路由跳转时,使用 7 的样子
    	<router-link :to="{name:'detail',params:{pk:1}}">
    	this.$router.push({name:'detail',params:{pk:1}})
        
# 4 this.router 的一些方法
	this.$router.push(path) 相当于点击路由链接(可以返回到当前路由界面)
    this.$router.replace(path): 用新路由替换当前路由(不可以返回到当前路由界面)
    this.$router.back(): 请求(返回)上一个记录路由
    this.$router.go(-1): 请求(返回)上一个记录路由
    this.$router.go(1): 请求下一个记录路由

多级路由

# 使用步骤
	1 新建一个页面组件(XxxView),配置路由
    	{
            path: '/xxx',
            name: 'xxx',
            component: XxxView,
        },
    2 在页面中,想再显示页面组件,实现点击切换的效果
    		<h1>lqz页面</h1>
            <router-link to="/xxx/xxx01">
              <button>xxx-01</button>
            </router-link>
            <router-link to="/xxx/xxx02">
              <button>xxx-02</button>
            </router-link>
            
            <router-view>
            # 以后这里变换页面组件,多级路由
            </router-view>
    3 新建两个页面组件 Xxx01.vue Xxx02.vue 配置路由children
    	{
            path: '/xxx',
            name: 'xxx',
            component: XxxView,
            children: [ //通过children配置子级路由
                {
                    path: 'xxx01', //此处一定不要写:/xxx
                    component: Xxx01
                },
                {
                    path: 'xxx02',//此处一定不要写:/xxx
                    component: Xxx02
                }
            ]
        },

路由守卫

# 前置路由收文,再进入路由之前做判断
# 写在router-index.js中,以后访问任意一个路由,都会执行这个代码
router.beforEach((to,from,next)=>{
    console.log('前置路由守卫',to,from)
    // 要是访问xxx01,不能跳转
    // 如果没有登录,不能访问
    if (to.path=='/xxx/xxx01'){
        alert('你咩有权限')
    }else{
        next() # 继续访问
    }
})

路由的两种工作模式

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

localstorage、sessionstorage和cookie

# 前端存储数据
	登录成功,有token,存本地
    不登录加购物车
    
# 前端可以存数据的位置:
	localstorage:永久存储,除非你删除,关闭浏览器,再打开还会在
    sessionstorage:只在当前会话生效,关闭浏览器,就没了
    cookie:有过期时间,到了过期时间,自动删除
    	#  需要借助于第三方 vue-cookies
      	#  cnpm install -S vue-cookies
        import cookies from 'vue-cookies'
		Vue.use(cookies)
<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(){
      let userinfo = {name:'lqz',age:19}
      localStorage.setItem('userinfo',JSON.stringify(userinfo))
    },
    getLocalstorage(){
      let userinfo = localStorage.getItem('userinfo')
      console.log(JSON.parse(userinfo).name)
    },
    deleteLocalstorage(){
      localStorage.clear()
      localStorage.removeItem('userinfo')
    },
    addSessiostorage(){
      let userinfo = {'name':'xxx','age':18}
      sessionStorage.setItem('userinfo',JSON.stringify(userinfo))
    },
    getSessiostorage(){
      let 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','xxx','300s')
    },
    getCookie(){
      console.log(this.$cookies.get('name'))
    },
    deleteCookie(){
      this.$cookies.remove('name')
    },
  },
}
</script>

到了这里,关于Vue——vuex使用、Router使用、localstorage、sessionstorage和cookie的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 浏览器的存储,cookie(httponly)、localStorage、sessionStorage、indexed对比

    浏览器提供了多种客户端存储机制,每种机制都有其特定的用途、特性和限制。以下是对 cookie 、 localStorage 、 sessionStorage 和 IndexedDB 的对比: 1. Cookie 存储大小 : 通常限制为4KB。 生命周期 : 可以设置过期时间。如果没有设置,它的生命周期将与会话持续相同,即关闭浏览器后

    2024年02月10日
    浏览(32)
  • 前端存储不要局限于cookies、Web Storage(sessionStorage、localStorage)还有它!

    前端本地化存储算是一个老生常谈的话题了,我们对于 cookies、Web Storage(sessionStorage、localStorage)的使用已经非常熟悉,这段时间公司提出了一个需求,业务员在移动端作业时需要有一个暂存功能,暂时存储填写的数据,我分析后数据量还比较大,前后查过各种资料。现在分

    2024年02月19日
    浏览(34)
  • Vue中如何进行状态持久化(LocalStorage、SessionStorage)

    在Vue应用中,通常需要将一些状态进行持久化,以便在用户关闭浏览器或刷新页面后,仍能保留之前的状态。常见的持久化方式包括 LocalStorage 和 SessionStorage 。本文将介绍如何使用这两种方式来实现状态的持久化。 LocalStorage 是HTML5中引入的一种持久化方式,它可以将数据存储

    2024年02月09日
    浏览(38)
  • sessionStorage和localStorage 的区别和使用,具体与 session 区分

    sessionStorage和localStorage是浏览器提供的Web Storage机制,用于存储在客户端(浏览器)本地的数据。它们之间的区别主要体现在以下几个方面: 1. 数据作用域: - sessionStorage:存储在sessionStorage中的数据仅在当 前会话期间有效 ,即在浏览器同一个窗口或标签页打开的时间范围内

    2024年02月09日
    浏览(31)
  • Vue项目保持用户登录状态(localStorage + vuex 刷新页面后状态依然保持)

            在前端项目开发中,实现用户的登陆注册功能时常常会有一个问题,那就是我们设置的登录状态,在浏览器页面刷新后就消失了,这其实只是因为我们没有保存用户状态。 这里小马演示使用的是 localStorage   +   vuex 方法(其他诸如 sessionStorage、cookie 等用法相同,

    2023年04月08日
    浏览(31)
  • vue中vuex的五个属性和基本用法,另加js-cookie的使用

    VueX 是一个专门为 Vue.js 应用设计的状态管理构架,统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data )。 state, getters, mutations, actions, modules。 1. state: vuex的基本数据,用来存储变量 2. geeter: 从基本数据(state)派生的数据,相当于state的计算属性 3.

    2024年02月14日
    浏览(30)
  • 原生JavaScript实现本地存储(localStorage)和会话存储(sessionStorage)

    目录 一、简单介绍 二、localStorage本地存储 三、sessionStorage会话存储 本地存储和会话存储的目的,是将所输入的文件存入到浏览器中,在需要的时候,直接调用,但是本地存储和会话存储有着一定的区别,本地存储,在不主动删除的情况下,会一直保留在浏览器中,会话存储是

    2023年04月08日
    浏览(32)
  • 利用HTML5存储对象:localStorage和sessionStorage解析

    前端朋友们,你是否曾为如何在用户的浏览器中存储数据而感到困扰?你是否想过,如果可以在用户的浏览器中存储一些数据,那么我们的应用程序将会变得多么强大?如果你的答案是肯定的,那么本文将为你解锁一种新的能力——使用HTML5的localStorage和sessionStorage。 HTML5引入

    2024年02月05日
    浏览(27)
  • 【温故而知新】HTML5存储localStorage/sessionStorage

    HTML5是HTML的最新版本,它引入了许多新的元素和功能,以适应现代网页开发的需求。以下是HTML5的一些主要特点: 新增语义元素 :HTML5引入了许多新的语义元素,如 header、footer、article、section 等,这些元素有助于提高网页的结构化和可访问性。 媒体支持 :HTML5引入了 audio 和

    2024年01月18日
    浏览(41)
  • 为什么sessionStorage不能代替vuex

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 译为“会话存储”,也是HTML5新增的一个存储对象, 用于本地临时存储同一窗口的数据,在 关闭窗口之后 将会删除这

    2024年02月09日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包