vue-router和vuex入門筆記

vue-routervuex是官方提供的vue插件,主要解決路由和狀態(tài)管理兩個問題

vue-router筆記

vue-router基本概念

vue-router解決路由與組件的對應關系姻僧。

  • 嵌套的路由/視圖表
  • 模塊化的规丽、基于組件的路由配置
  • 路由參數(shù)、查詢撇贺、通配符
  • 基于 Vue.js 過渡系統(tǒng)的視圖過渡效果
  • 細粒度的導航控制
  • 帶有自動激活的 CSS class 的鏈接
  • HTML5 歷史模式或 hash 模式赌莺,在 IE9 中自動降級
  • 自定義的滾動條行為

vue-router的基礎使用方法

1.安裝vue-router依賴

npm i -S vue-router

2.使用vue-router插件

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

3.初始化vue-router對象

const routes = [
{ path: '/a' component: A },
{ path: '/b' component: B },
{ path: '/hello-routes', component:helloroutes  }
]
const router = new Route({
    routes
})

注:這里省略了定義A組和B組的過程,這兩個組件與普通組件無異

4.實例化vue對象松嘶,傳入router參數(shù)

new Vue({
    router,
    render:h =>(App)
})

5.使用router-view和router-link

router-viewrouter-linkvue-router官方提供的兩個組件艘狭,router-view會替換為路由對應的組件,router-link相當于a標簽,點擊會加載to屬性中路由對應組件

   <div>
      <div>
        <router-link to="/a">a</router-link>
      </div>
      <div>
        <router-link to="/b">b</router-link>
      </div>
      <div>
        <router-link to="/hello-routes">helloroutes</router-link>
      </div>
    </div>
<router-view/><!-- router-view 顯示的是當前路由地址所對應的內(nèi)容 -->

路由嵌套

上面是一個非常簡單的vue-router case巢音,實際項目開發(fā)過程中遵倦,需求往往不會這么簡單,比如我們希望實現(xiàn)/a/aa路由官撼,并且/aa對應的組件嵌套在/a之下梧躺,這時我們需要修改路由的配置文件:

const routes =[{
    path:'/a',
    component:A,
    redirect:'/a/aa',
    children:[
    {
    path:'/a/aa',
    component:AA,
    }]
}]

并修改A組件的內(nèi)容:

<template>
<div>
<div>a</div>
<router-view/>
</div>
</template>

由于A組件是父級路由,所以也需要添加router-view組件傲绣,動態(tài)匹配子路由

重定向

將一個路由重定向到另一個路由燥狰,實際開發(fā)過程中非常實用,修改配置文件即可:

const routes = [{
    path:'/a',
    component:A,
    redirect:'/a/aa',
    children[{
    path:'/a/aa',
    component:AA,
    }]
}]

動態(tài)路由

為了支持restful形式路由以及更復雜的場景時斜筐,我們可以使用動態(tài)路由和定義路由時龙致,在路由前加上冒號即可,我們先添加AA2組件顷链,動態(tài)路由部分通過this.$route.params進行接收:

<template>
  <div>
    aa2
    <div>{{id}}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      id: null,
    };
  },
  created() {
    this.id = this.$route.params.id;
  },
};
</script>

修改路由配置后生效:

const routes = [
  {
    path: "/a",
    component: A,
    redirect: "/a/aa",
    children: [
      {
        path: "/a/aa",
        component: AA,
      },
      {
        path: "/a/:id",
        component: AA2,
      },
    ]
  }
]

動態(tài)路由的優(yōu)先級低于普通路由目代,所以我們訪問/a/aa時會匹配到AA組件,而輸入其它路由時會匹配到AA2組件

路由參數(shù)

參數(shù)傳遞是我們開發(fā)過程中必不可少的步驟嗤练,vue-router支持參數(shù)傳遞榛了,通過this.$route.query進行接收,我們修改AA組件進行測試

<template>
  <div>
    aa
    <div>{{message}}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      message: "",
    };
  },
  created() {
    this.message = this.$route.query.message || "";
  },
};
</script>

編程式路由

有很多時候我們需要手動操作路由的跳轉(zhuǎn)煞抬,這時我們需要使用this.$router,以下是一些常用的操作:

1.路由跳轉(zhuǎn)
this.$router.push('/a/aa')
2.帶參數(shù)路由跳轉(zhuǎn)
this.$router.push({
    path:'/a/aa',
    query:{
    message:'321'
    }
})
3.不同history插入記錄
this.$router.replace{'/a/123'}
4.回退
this.$router.go(-1)

vuex筆記

vuex基本概念

vuex解決了狀態(tài)管理問題霜大,通過集中管理狀態(tài),使得state革答、actionview實現(xiàn)松耦合战坤,從而讓代碼更容易維護。

  • state:驅(qū)動應用的數(shù)據(jù)源残拐。
  • actions:響應在 view上的用戶輸入導致的狀態(tài)變化途茫。
  • view:以聲明方式將 state映射到視圖。
    “單向數(shù)據(jù)流”理念示意圖

vuex的基本使用方法

1.安裝vuex依賴

npm i -S vuex

2.使用vuex插件

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

3.初始化vuex對象

const store = new Vuex.Store({
    state:{
    data:'我是測試'
    },
    mutations:{
    SET_DATA(state,data){
    state.data=data
    }
    },
    actions:{
    setData({commit},data){
    commit('SET_DATA',data)
    }
    }
})

4.實例化vue對象溪食,傳入store參數(shù)

new Vue({
    render:h =>h(app),
    router,
    stare
})

5.讀取vuex狀態(tài)

<div>{{$store.state.data}}</div>

6.更新vuex狀態(tài)

update(){
    this.$store.dispatch('setData','這是測試二')
}

vuex模塊化

實際項目開發(fā)中囊卜,狀態(tài)眾多,如果全部混在一起错沃,則難以分辨栅组,而且容易互相沖突,為了解決問題枢析,vuex引入模塊化的概念玉掸,解決這個問題,下面我們定義ab兩個模塊:

const moduleA = {
  state: {
    data: "我是a",
  },
  mutations: {
    SET_DATA(state, data) {
      state.data = data;
    }
  },
  actions: {
    SETdATA({ commit }, data) {
      commit("SET_DATA", data);
    }
  }
};
const moduleB = {
  state: {
    data: "我是b",
  },
  mutations: {
    SET_DATA(state, data) {
      state.data = data;
    }
  },
  actions: {
    setData({ commit }, data) {
      commit("SET_DATA", data);
    }
  }
};

修改store的初始化代碼:

const store = new Vuex.Store({
    modules:{
    a:moduleA,
    b:moduleB
    }
})

修改獲取狀態(tài)的代碼登疗,此時需要加入模塊進行區(qū)分:

<div>{{$store.state.a.data}}</div>
<div>{{$store.state.b.data}}</div>
<button @click="update('a')">按鈕a</button>
<button @click="update('b')">按鈕b</button>

修改update方法:

update(abc){
    this.$store.dispatch('setDate','update ${abc}')
}

vuex命名空間

上述代碼在執(zhí)行過程中排截,獲取狀態(tài)沒有問題,但是修改狀態(tài)會出現(xiàn)問題辐益,因為兩個模塊出現(xiàn)同名actions断傲,所以此時需要使用命名空間來解決這個問題:

const moduleA = {
    namespaced:tue,
    //...
}

修改update方法:

update(abc){
    this.$store.dispatch('$(abc)/setData', 'update $(abc)')
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肯尺,隨后出現(xiàn)的幾起案子蝙斜,更是在濱河造成了極大的恐慌衫冻,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垦垂,死亡現(xiàn)場離奇詭異,居然都是意外死亡牙瓢,警方通過查閱死者的電腦和手機劫拗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矾克,“玉大人页慷,你說我怎么就攤上這事⌒哺剑” “怎么了酒繁?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長控妻。 經(jīng)常有香客問我州袒,道長,這世上最難降的妖魔是什么弓候? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任郎哭,我火速辦了婚禮,結(jié)果婚禮上菇存,老公的妹妹穿的比我還像新娘彰居。我一直安慰自己,他們只是感情好撰筷,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布陈惰。 她就那樣靜靜地躺著,像睡著了一般毕籽。 火紅的嫁衣襯著肌膚如雪抬闯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天关筒,我揣著相機與錄音溶握,去河邊找鬼。 笑死蒸播,一個胖子當著我的面吹牛睡榆,可吹牛的內(nèi)容都是我干的萍肆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼胀屿,長吁一口氣:“原來是場噩夢啊……” “哼塘揣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宿崭,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤亲铡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后葡兑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奖蔓,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年讹堤,在試婚紗的時候發(fā)現(xiàn)自己被綠了吆鹤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡洲守,死狀恐怖檀头,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岖沛,我是刑警寧澤暑始,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站婴削,受9級特大地震影響廊镜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜唉俗,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一嗤朴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虫溜,春花似錦雹姊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘾境,卻和暖如春歧杏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背迷守。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工犬绒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兑凿。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓凯力,卻偏偏與公主長得像茵瘾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咐鹤,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354