文章目录

  • Vuex
    • 1.概述
    • 2.使用
    • 3.四个 map 方法
    • 4.模块化+命名空间
  • Vue Router
    • 1.SPA
    • 2.路由
    • 3.基本使用
    • 4.多级路由
    • 5.路由传参query参数
    • 6.命名路由
    • 7.路由传参params参数
    • 8.路由的props配置
    • 9.路由跳转方式
    • 10.缓存路由
    • 11. activated deactivated生命周期钩子
    • 12.路由守卫
    • 13.路由器的两种工作模式
  • 上线项目

Vuex

1.概述

Vuex 是什么
概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对Vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。

什么时候使用 Vuex

  • 多个组件依赖于同一状态
  • 来自不同组件的行为需要变更同一状态

原理

  • vuex包含三个主要组成部分:actions、mutations、state,它们都有store管理;
  • vue组件通过dispatch函数发送给vuex以操作名称和操作数,然后actions接收到之后调用commit函数发送给mutations;(存在actions是为了需要发送ajax请求才知道操作数的情况),当然已知操作数可以直接调用commit而不调用dispatch;
  • mutations调用mutate函数传输计算后的数据给state;
  • state调用render函数将数据传递给vc。

2.使用

使用vuex

  1. 下载vuex:npm i vuex
  2. 创建src/store/index.js该文件用于创建Vuex中最为核心的store:
import Vue from 'vue'
import Vuex from 'vuex'   // 引入VuexVue.use(Vuex)  // 应用Vuex插件const actions = {}      // 准备actions——用于响应组件中的动作
const mutations = {}   // 准备mutations——用于操作数据(state)
const state = {}           // 准备state——用于存储数据// 创建并暴露store
export default new Vuex.Store({actions,mutations,state,
})
  1. 在src/main.js中创建vm时传入store配置项:

import Vue from 'vue'
import App from './App.vue'
import store from './store'   // 引入storeVue.config.productionTip = falsenew Vue({el: '#app',render: h => h(App),store,                                     // 配置项添加storebeforeCreate() {Vue.prototype.$bus = this}
})
  1. 编写代码:
    Vuex的基本使用:
    ①初始化数据state,配置actions、mutations,操作文件store.js
    ②组件中读取vuex中的数据$store.state.数据
    ③组件中修改vuex中的数据$store.dispatch('action中的方法名',数据)$store.commit('mutations中的方法名',数据)
    若没有网络请求或其他业务逻辑,组件中也可越过actions,即不写dispatch,直接编写commit
import Vue from 'vue'
import Vuex from 'vuex'   // 引入VuexVue.use(Vuex)  // 应用Vuex插件// 准备actions——用于响应组件中的动作
const actions = {/* jia(context,value){console.log('actions中的jia被调用了')context.commit('JIA',value)},jian(context,value){console.log('actions中的jian被调用了')context.commit('JIAN',value)}, */jiaOdd(context,value){ // context 相当于精简版的 $storeconsole.log('actions中的jiaOdd被调用了')if(context.state.sum % 2){context.commit('JIA',value)}},jiaWait(context,value){console.log('actions中的jiaWait被调用了')setTimeout(()=>{context.commit('JIA',value)},500)}
}
// 准备mutations——用于操作数据(state)
const mutations = {JIA(state,value){console.log('mutations中的JIA被调用了')state.sum += value},JIAN(state,value){console.log('mutations中的JIAN被调用了')state.sum -= value}
}
// 准备state——用于存储数据
const state = {sum:0 //当前的和
}// 创建并暴露store
export default new Vuex.Store({actions,mutations,state,
})

使用:

 $store.state.sum

getters配置项
概念:当state中的数据需要经过加工后再使用时,可以使用getters加工,相当于全局计算属性
在store.js中追加getters配置:

const getters = {bigSum(state){return state.sum * 10}
}// 创建并暴露store
export default new Vuex.Store({......getters
})

3.四个 map 方法

mapState方法:用于帮助映射state中的数据为计算属性,相当于完成一个等于

computed: {// 借助mapState生成计算属性:sum、school、subject(对象写法一)...mapState({sum:'sum',school:'school',subject:'subject'}),// 借助mapState生成计算属性:sum、school、subject(数组写法二)...mapState(['sum','school','subject']),
},

mapGetters方法:用于帮助映射getters中的数据为计算属性

computed: {//借助mapGetters生成计算属性:bigSum(对象写法一)...mapGetters({bigSum:'bigSum'}),//借助mapGetters生成计算属性:bigSum(数组写法二)...mapGetters(['bigSum'])
},

mapActions方法:用于帮助生成与actions对话的方法,即包含$store.dispatch(xxx)的函数

methods:{//靠mapActions生成:incrementOdd、incrementWait(对象形式)...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'})//靠mapActions生成:incrementOdd、incrementWait(数组形式)...mapActions(['jiaOdd','jiaWait'])
}

mapMutations方法:用于帮助生成与mutations对话的方法,即包含$store.commit(xxx)的函数

methods:{//靠mapActions生成:increment、decrement(对象形式)...mapMutations({increment:'JIA',decrement:'JIAN'}),//靠mapMutations生成:JIA、JIAN(对象形式)...mapMutations(['JIA','JIAN']),
}

mapActions与mapMutations使用时,若需要传递参数需要:在模板中绑定事件时传递好参数,否则参数是事件对象

组件:

<template><div><h1>当前求和为:{{ sum }}</h1><h3>当前求和的10倍为:{{ bigSum }}</h3><h3>我是{{ name }},我在{{ school }}学习</h3><select v-model.number="n"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><button @click="increment(n)">+</button><button @click="decrement(n)">-</button><button @click="addOdd(n)">当前求和为奇数再加</button><button @click="addWait(n)">等一等再加</button></div>
</template><script>import {mapState, mapGetters, mapMutations, mapActions} from 'vuex'    //												

前端开发学习之【Vue】-下相关推荐

  1. 老前端工程师现身说法,2021Web前端开发学习路线图

    导读:2021Web前端开发学习路线图 三大件学习 现在每年依旧有很多初级入门的前端开发.所以对初入门的朋友也给出一点意见. 刚入门的朋友,我觉得不应该一开始就学习像Vue.TypeScript.We ...

  2. 前端开发学习路线图,完整学习教程+工具+框架

    回看近年的前端发展,不管是之前的散装前端时代,还是后来插件化.模块化的演进,亦或是现如今如火如荼的前端工程化迭代,发展速度实在是太快了,各种框架层出不穷,这些难免会让我们这些学习者眼花缭乱,满腹疑团. ...

  3. Web前端开发学习【1】-----大学生如何购买学生版的阿里云服务器,或免费领取半年的阿里云服务器

    Web前端开发学习[1]-----大学生如何购买学生版的阿里云服务器,或免费领取半年的阿里云服务器目录 一.进入阿里云官网.注册阿里云账号 1.百度搜索关键词[阿里云服务器],然后进入官网 2.免费注 ...

  4. 重磅推出:分享阿里云大学前端开发学习路线链接

    重磅推出:分享阿里云大学前端开发学习路线链接 这是一份阿里云大学推出前端开发学习路线,适合入门.也适合刚入职场一两年的小伙伴,来一个基础知识进行加深视频学习.内容言简意赅,通过demo练习等来理解学习 ...

  5. ul 原点显示_web前端开发学习教程,CSS HTML - ul li列表原点如何相连

    原标题:web前端开发学习教程,CSS HTML - ul li列表原点如何相连 目前我列出两个方案,很详细,希望可以帮助到有疑问的朋友. 方案一: html 参与考试<第一期模拟考试> ...

  6. 前端开发学习笔记(一):HTML

    前端开发学习笔记(一):HTML 文章目录 前端开发学习笔记(一):HTML 一. HTML的文档结构 二.标签属性 2.1. 标签属性 2.2. 文字格式化标签 2.3. html实体转义 三. t ...

  7. 前端开发学习及工具网站(持续更新)

    前端开发学习及工具网站 该文章主要是记录前端开发中好的学习网站或者工具网站 大部分实用网站来源抖音鱼皮大佬分享,这里分享给大家 1.w3cschool(编程狮) 这个网站适合0基础学前端的同学,内容简 ...

  8. 前端开发工程师(VUE框架)招聘

    前端开发工程师(VUE框架) 岗位职责: 1.熟练运用HTML/JS/CSS等前端技术,精通JavaScript.Ajax.DOM.html.css等前端技术 2.熟练使用VUE前端框架,理解VUE框 ...

  9. 2018web前端学习路线,详谈web前端开发学习路线

    近几年IT业可谓是发展火热,而且新生了很多的职业.在这众多的新生职业中备受瞩目的当属web前端工程师了,web前端在IT行业真正受到重视的时间不超过五年,但是web前端的发展前景却是非常的可观,好前景 ...

  10. 送给大家一套完整的web前端开发学习路线

    本文来源:千锋web前端开发 近几年IT业可谓是发展火热,而且新生了很多的职业.在这众多的新生职业中备受瞩目的当属web前端工程师了,web前端在IT行业真正受到重视的时间不超过五年,但是web前端的 ...

最新文章

  1. acm经典题Mark
  2. 哪种营销方法效果最差_网络营销推广中如何监控评测网络效果?
  3. JavaWeb(二)——Http协议
  4. java webservice接口开发_给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)
  5. Native snappy library not available: this version of libhadoop was built without snappy support
  6. easyswoole数据库连接池_如何在 Swoole 中优雅的实现 MySQL 连接池
  7. 3级调度 fpga_Vivado HLS学习笔记——1.了解FPGA架构
  8. 企业微信加密消息体_用企业微信小程序发送消息
  9. Java泛型中extends和super的区别?
  10. 一分钟学会看k线图_1分钟学会看K线请笑纳70种经典K线组合形态,绝对干货,轻松低买高卖!...
  11. phpmemcache
  12. android学习笔记---手机拍照功能的实现,及原理
  13. 几张动态图弄懂递归,二叉树,二分查找简短算法
  14. 一个高难度的 Java 3D 智力游戏,立方四子棋
  15. 第三方支付api接口是什么?
  16. 100层楼扔两个鸡蛋的问题
  17. C#实现微信公众号群发消息(解决一天只能发一次的限制)
  18. ​A* 算法简介 from Red Blob Games​(译文)
  19. n子棋,你能下赢电脑吗,来玩玩吧
  20. 河北单招计算机英语,2019年河北高职单招考试十类 和对口电子电工类、计算机类联考 专业基础考试(英语)考试大纲.doc...

热门文章

  1. 菜鸟开店教程,告诉你淘宝店怎么开,让你也可以轻轻松松做淘宝
  2. 挥别错的才能和对的相逢
  3. 只有善用能力才能充分发挥
  4. 卡通化图片python实现代码_媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。...
  5. Linux内核USB总线--设备控制器驱动框架分析
  6. 人物关系 人脸识别_一种基于人脸识别系统的人物关系挖掘系统及方法与流程...
  7. 十大券商:稳经济一揽子政策将起效
  8. 网站域名可以绑定2个服务器吗,服务器可以绑定几个域名
  9. [LC] 307. Range Sum Query - Mutable
  10. MyBatis resultMap 标签的作用