1、vue-router——路由管理vue
通过本身的学习加项目总结,针对路由这块内容说下本身的理解:vue-router
路由配置主要有三个关键字:route routes routervuex
route(单数)表示一条路由,它是一个对象由两部分构成(path——路径;component——组件)数组
例如:homeBtn——homeContent(点击homeBtn按钮页面切换到homeContent组件);sideBtn——sideContent;这是两条路由(route)ide
若是路由多,这样一条一条表示显然不合理。函数
由此出现routes(复数)表示一组路由(路由的数组),上面的两条路由就能够这样表示:学习
具体写法:const routes = [{path:'/home',component:homeContent},{path:'/sidebar',component:sidebarContent}]this
router表示路由机制(即路由的管理者),实现原理:点击homeBtn按钮——到routes里去查找到‘/home’对应得组件homeContent,并显示页面。spa
写法:const router = new VueRouter({routes:routes}),简写:const router = new VueRouter({routes})code
最后将router实例注入到vue根实例中,即可以使用路由
import Router from 'vue-router'
Vue.use(Router)
配置好路由再定义好路由的出口router-view就可使用路由实现页面跳转了。
ps:router-link至关于a标签。
2、vuex——数据状态管理
简单说下vuex的做用:主要用于组件直接通信。好比A和B和C为兄弟组件,组件中都用到name这个字段,A组件中若是对name字段进行更改,那该如何通知B和C组件name字段已经发生变化了呢?这个时候就可使用Vuex来进行通信了。先将name存起来(state管理变量初始状态的),A组件中经过触发mutation来通知state中的name发生改变。那么B和C组件就能够从vuex获取state中的name。大概就是这么个意思。
另外说一下:vuex中的几个关键要素:state、mutation、action以及vuex中自带的函数:mapState、mapMutation、mapAction、mapGetter(都是我的的理解,若有不当请指出。)
state主要定义一些初始化的变量;
mutation定义修改State的方法,有两个参数(state、value)
action定义触发mutation行为的方法;语法:方法名(context)、经过context.commit来触发mutation的方法;
getter定义获取state的方法,参数state;
上面内容主要说如何定义这些变量,下面说下若是在组件中使用这些方法:
第一种状况:设置/修改变量的两种方式:
a、在计算属性中或方法中调用mutation方法:this.$store.commit(‘方法名’,参数值)
b、使用action触发mutation方法:this.$store.dispatch(mutaion的方法)
官方不建议使用a,建议使用b。
第二种状况:获取参数
两种方式:一、this.$store.state.参数;二、this.$store.getter.方法名
使用this.$store.state等这些书写方式太长。因此能够经过vuex的辅助函数:mapState等来简化书写
辅助函数的使用方法:
一、mapGetters/apState放在computed属性中。
书写方式:a、...mapGetters(['Getter定义的方法名'])
b、参数若是是count:...mapState({state=>state.count})
二、mapMutation和mapAction,通常放在method中写:...mapMutation(['mutation定义的方法名'])
有错误欢迎指正!