目录
Vue-router路由基础
简单路由实例
Vuex基础
基础数据流实例
多模块数据流实例
import Vue from 'vue';
import VueRouter from 'vue-router'
import pageA from './pages/a.vue'
import pageB from './pages/b.vue'
Vue.use(VueRouter)
//界面路由关系
const routes = [
{
path:'/pageA',//路由路径
component:pageA
},
{
path:'/pageB',
component:pageB
}
]
const router = new VueRouter(
{ routes}//实例化
)
export default router//输出
4.在main.js 中引入
import Vue from 'vue'
//import App from './App.vue'
import router from './router'
Vue.config.productionTip = false
new Vue({
//render: h => h(App),
router//引入路由
}).$mount('#app')
5.在public中的index中加入路由视图
<div id="app">
<router-view>router-view>
<router-link to='/'>toFirstrouter-link>
<router-link to='/pageA'>toArouter-link>
<router-link to='/pageB'>toBrouter-link>
div>
6.如果采用脚手架cli,要在根目录下创建文件vue.config.js
module.exports ={
runtimeCompiler: true//默认为关闭
}
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex)
const state ={
count:1
}
const mutations = {
increment(state){
state.count++
},
decrement(state){
state.count--
}
}
const actions ={
incremen: ({ commit})=>{
commit('increment')//'increment'与mutations中对应,此处做提交操作
},
decremen:({ commit})=>{
commit('decrement')
}
}
export default new Vuex.Store({ state,mutations,actions})
3.在main.js 引入store.js,使其实例化,可获取state等
import store from './store.js'
new Vue({
render: h => h(App),
// router//引入路由
store//引入store实例Vuex,使得组件中可获取state中的数据
}).$mount('#app')
4.在components下创建vuex.vue组件,并搭载到App.vue中
Vuex.vue:
<template>
<div class="vuex">
vuex{ { $store.state.count}}
<button type="button" name="button" @click="incremen">增加button>
<button type="button" name="button" @click="decremen">减少button>
div>
template>
<script>
import { mapActions} from 'vuex'//用vuex做store与component关联,且获取到actions
export default {
methods: mapActions([
'incremen',//与action对应
'decremen'
])
}
script>
<style>
style>
a.js
const state ={ //数据
money:1
}
const mutations = { //方法
add(state,param){
state.money+=param
},
reduce(state){
state.money--
}
}
const actions = { //提交到mutations
add: ({ commit},param)=>{ //可传参,前提是在事件中有参数
commit('add',param)
},
reduce:({ commit})=>{
commit('reduce')
}
}
//导出
export default{
namespaced:true,//解决不同模块命名冲突的问题
state,
mutations,
actions
}
Index.js
import Vue from 'vue';
import Vuex from 'vuex'
import money from './modules/a.js'
import count from './modules/b.js'
Vue.use(Vuex)
export default new Vuex.Store({
modules:{
money,
count
}
})
4.创建组件vuea,vueb
Vuea.vue
<template>
<div class="pagea">pagea{ { $store.state.money.money}}
<button type="button" name="button" @click="add(2)">增加button>
<button type="button" name="button" @click="reduce">减少button>
div>
template>
<script>
import { mapActions} from 'vuex'
export default {
methods:mapActions('money',['add','reduce'])
}
script>
<style>
style>
5.在App.vue中引用vuea,vueb组件,在main.js中搭载index.js,并实例化store