vuex使用

  1. # vuex :状态管理器---》存数据(变量)的地方,所有组件都可以操作
  2. Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信
  1. <h1>1 vuex的使用 基本使用(操作state的数据)</h1>
  2. 购物车商品数量:{{ $store.state.num }}
  3. methods:{
  4. handleAdd(){
  5. // 1 直接操作
  6. // this.$store.state.num += 1
  7. // 2 正统方式,通过dispatch触发actions
  8. this.$store.dispatch('add',2) //add 必须是action中得函数
  9. },
  10. add(name) {
  11. //1 直接操作
  12. // this.$store.state.goods.push(name)
  13. //2 正常套路
  14. this.$store.dispatch('addShopping', name)
  15. }
  16. },
  17. export default new Vuex.Store({
  18. state: {
  19. num: 10,
  20. goods: [],
  21. },
  22. mutations: {
  23. mAdd(state,count){
  24. state.num += count
  25. },
  26. addShopping(state, name) {
  27. state.goods.push(name)
  28. }
  29. },
  30. actions: {
  31. // 至少要有一个参数,context上下文对象,触发mutations中函数执行,或者直接该state中数据都可以
  32. add(context,count){
  33. // 使用commit,触发mutations中得函数
  34. context.commit('mAdd',count) // 会触发mutations中得mAdd的执行
  35. },
  36. addShopping(context, name) {
  37. // 这里起ajax请求,检查name库存够不够
  38. //假设库存不够,弹个不够的消息
  39. // alert('库存不够了')
  40. // return
  41. context.commit('addShopping', name)
  42. }
  43. },
  44. })

Router使用

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

多级路由

  1. # 使用步骤
  2. 1 新建一个页面组件(XxxView),配置路由
  3. {
  4. path: '/xxx',
  5. name: 'xxx',
  6. component: XxxView,
  7. },
  8. 2 在页面中,想再显示页面组件,实现点击切换的效果
  9. <h1>lqz页面</h1>
  10. <router-link to="/xxx/xxx01">
  11. <button>xxx-01</button>
  12. </router-link>
  13. <router-link to="/xxx/xxx02">
  14. <button>xxx-02</button>
  15. </router-link>
  16. <router-view>
  17. # 以后这里变换页面组件,多级路由
  18. </router-view>
  19. 3 新建两个页面组件 Xxx01.vue Xxx02.vue 配置路由children
  20. {
  21. path: '/xxx',
  22. name: 'xxx',
  23. component: XxxView,
  24. children: [ //通过children配置子级路由
  25. {
  26. path: 'xxx01', //此处一定不要写:/xxx
  27. component: Xxx01
  28. },
  29. {
  30. path: 'xxx02',//此处一定不要写:/xxx
  31. component: Xxx02
  32. }
  33. ]
  34. },

路由守卫

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

路由的两种工作模式

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

localstorage、sessionstorage和cookie

  1. # 前端存储数据
  2. 登录成功,有token,存本地
  3. 不登录加购物车
  4. # 前端可以存数据的位置:
  5. localstorage:永久存储,除非你删除,关闭浏览器,再打开还会在
  6. sessionstorage:只在当前会话生效,关闭浏览器,就没了
  7. cookie:有过期时间,到了过期时间,自动删除
  8. # 需要借助于第三方 vue-cookies
  9. # cnpm install -S vue-cookies
  10. import cookies from 'vue-cookies'
  11. Vue.use(cookies)
  1. <template>
  2. <div class="home">
  3. <h1>操作localstorage,永久存储</h1>
  4. <button @click="addLocalstorage">增加</button>
  5. <button @click="getLocalstorage"></button>
  6. <button @click="deleteLocalstorage">删除</button>
  7. <h1>操作sessiostorage,当前会话,关闭浏览器</h1>
  8. <button @click="addSessiostorage">增加</button>
  9. <button @click="getSessiostorage"></button>
  10. <button @click="deleteSessiostorage">删除</button>
  11. <h1>操作cookie,有过期时间</h1>
  12. <button @click="addCookie">增加</button>
  13. <button @click="getCookie"></button>
  14. <button @click="deleteCookie">删除</button>
  15. </div>
  16. </template>
  17. <script>
  18. export default {
  19. name: 'HomeView',
  20. methods: {
  21. addLocalstorage(){
  22. let userinfo = {name:'lqz',age:19}
  23. localStorage.setItem('userinfo',JSON.stringify(userinfo))
  24. },
  25. getLocalstorage(){
  26. let userinfo = localStorage.getItem('userinfo')
  27. console.log(JSON.parse(userinfo).name)
  28. },
  29. deleteLocalstorage(){
  30. localStorage.clear()
  31. localStorage.removeItem('userinfo')
  32. },
  33. addSessiostorage(){
  34. let userinfo = {'name':'xxx','age':18}
  35. sessionStorage.setItem('userinfo',JSON.stringify(userinfo))
  36. },
  37. getSessiostorage(){
  38. let userinfo = sessionStorage.getItem('userinfo')
  39. console.log(JSON.parse(userinfo).name)
  40. },
  41. deleteSessiostorage(){
  42. sessionStorage.clear()
  43. sessionStorage.removeItem('userinfo')
  44. },
  45. addCookie(){
  46. // 需要借助于第三方 vue-cookies
  47. // cnpm install -S vue-cookies
  48. this.$cookies.set('name','xxx','300s')
  49. },
  50. getCookie(){
  51. console.log(this.$cookies.get('name'))
  52. },
  53. deleteCookie(){
  54. this.$cookies.remove('name')
  55. },
  56. },
  57. }
  58. </script>

Vue——vuex使用、Router使用、localstorage、sessionstorage和cookie的更多相关文章

  1. localStorage sessionStorage 和cookie等前端存储方式总结

    localStorage sessionStorage 和cookie localStorage localStorage是本地存储的,除非清空本地数据 localStorage不会自动把数据发给服务 ...

  2. 前端 JS,localStorage/sessionStorage、cookie 及 url 等实现前台数据共享、传输

    需求是这样的:需要统计用户公司某款产品用户的回馈情况,美工给的设计多个psd,每个页面里面都有一个选择题,让用户选择自己的答案,最后经过几次选择之后在最后一个页面统一提交到后台!所以这里引出的技术需求 ...

  3. 本地存储常用方式 localStorage, sessionStorage,cookie 的区别 和 服务器存储session

    本地存储:把一些信息存储到客户端本地(主要目的有很多,其中有一个就是实现多页面之间的信息共享)       1. 离线缓存(xxx.manifest)  H5处理离线缓存还是存在一些硬伤的,所以真实项 ...

  4. localstorage sessionstorage和cookie的区别

    基本概念 cookie:是网景公司的前雇员在1993年发明.它的主要用于保存登陆信息,比如登陆某个网站市场可以看到'记住密码’,这就是通过在cookie中存入一段辨别用户身份的数据来实现的. sess ...

  5. localStorage. sessionStorage、 Cookie不共同点:(面试题)

    ●存储大小的不同: localStorage的大小一般为5M sessionStorage的大小一般为5M cookies的大小一般为4K ●有效期不同: 1.localStorage的有效期为永久有 ...

  6. vue全家桶router、vuex、axios

    main.js import Vue from 'vue' import App from './App' import router from './router' import store fro ...

  7. VUE 浏览器关闭时清空localStorage

    1. 概述 1.1 说明 vue项目中,为了解决页面刷新时vuex数据丢失问题,使用localStorage进行存储对应的vuex数据(判断对应localStorage是否为空,不为空则为vuex中数 ...

  8. 记一次vue+vuex+vue-router+axios+elementUI开发(三)

    项目用到了状态管理工具 Vuex  中文文档:https://vuex.vuejs.org/zh/guide/ 大家都知道,vue中可用props将父组件的数据传递给子组件,但是有个问题,子组件一般不 ...

  9. vue vuex vue-rouert后台项目——权限路由(超详细简单版)

    项目地址:vue-simple-template共三个角色:adan barbara carrie 密码全是:123456 adan 拥有 最高权限A 他可以看到 red , yellow 和 blu ...

  10. Vue+Vuex实现自动登录 升级版

    Vue+Vuex实现自动登录 升级版 之前实现的版本在这里:Vue+Vuex实现自动登录       在之前实现的版本中,如果你进行测试,可以看到在浏览器的local Storage中,确实里面有了我 ...

随机推荐

  1. Unity3D中的Attribute详解(六)

    本文将重点对Unity剩下常用的Attribute进行讲解,其他不常用的Attribute各位可以自行去官方文档查阅. 首先是UnityEngine命名空间下的. ColorUsage,这个主要作用于 ...

  2. 关于Cookie要懂的知识

    ☞演示 什么是Cookie? http是一个无状态协议,它不对之前发生过的请求和响应的状态进行管理.这样就可能导致,我们登陆一个网站后,每次跳转新页面,之前的登陆状态都不能被记住,要重新登陆等问题. ...

  3. Python中实现单例的几种方式

    Python如何实现单例? 什么是单例模式? 单例模式:一个类只能有一个实例化对象存在的模式. 如何实现单例? 1.使用模块 python中模块是天然的单例模式,当一个模块被调用时,会生成对应的.py ...

  4. Django笔记十八之save函数的继承操作和指定字段更新等实例方法

    本文首发于微信公众号:Hunter后端 原文链接:Django笔记十八之save函数的继承操作和指定字段更新等实例方法 这篇笔记主要介绍 Django 一些实例方法. 什么是 实例,我们知道通过fil ...

  5. 自编写二进制安装kubernetes脚本v2.0版本

    一键安装 二进制安装Kubernetes(k8s) v2.0 手动安装:https://github.com/cby-chen/Kubernetes 脚本安装:https://github.com/c ...

  6. window设置开启启动程序的几种方式比较

    一.设置开机启动项 进入启动文件夹,拷贝程序的快捷方式到这个文件夹即可. 可在任务管理器--启动,查看是否设置成功 启动时间:用户登陆之后. 二.使用计划任务设置自启 进入计划任务界面进行配置,按wi ...

  7. w11 U盘启动进PE看不到硬盘解决方法

    w11 U盘启动进PE看不到硬盘解决方法 今天,因为要配系统,所以需要进pe,改配置文件,进去之后发现看不到系统盘,大吃一惊,然后各种找资料,最后,还是被我搞定了. 这里以戴尔为例,方法都差不多,先看 ...

  8. [SpringBoot]Spring Boot Framework @ Environment / ApplicationContext & SpringApplication

    [#]: 表示较为重要 1 Spring Boot Overview SpringBoot是一个快速开发框架,快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化XML配置,全 ...

  9. [网络]公共网络安全漏洞库: CVE / CNCVE

    本文博主的经历与该博文处理绿盟科技安全评估的系统漏洞 - 博客园的经历相同: 处理[第三方网络安全公司]给[公司产品]的[客户的服务器]扫描后生成的[安全漏洞报告]. 1 前言 以网络安全行业中最大的 ...

  10. CentOS配置Django虚拟环境--坑点总结

    1.CentOS原装有python2.7,编译安装python3.X版本 2.sqlite-devel未安装 3.sqlite3版本过低报错 升级sqlite3版本 参考 https://blog.c ...