Vue之Vuex與本地存儲(chǔ)的區(qū)別

hello妻坝!大家早上好呀盲赊!我又來分享小知識(shí)了铣鹏!
今天想向大家分享一下vuex和本地存儲(chǔ)的區(qū)別!首先你要知道什么是vuex和本地存儲(chǔ)哀蘑,不知道的小白同學(xué)也沒有關(guān)系诚卸!我來拯救你們了。

一丶 Vuex簡介

Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式递礼。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài)惨险,并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。
大白話:vue的全局倉庫脊髓,用來存放數(shù)據(jù)

二 丶Vuex核心概念

1. State 對象類型,單一狀態(tài)樹(數(shù)據(jù)倉庫)
Vuex 使用單一狀態(tài)樹——是的栅受,用一個(gè)對象就包含了全部的應(yīng)用層級(jí)狀態(tài)将硝。至此它便作為一個(gè)“唯一數(shù)據(jù)源而存在恭朗。這也意味著,每個(gè)應(yīng)用將僅僅包含一個(gè) store 實(shí)例依疼。單一狀態(tài)樹讓我們能夠直接地定位任一特定的狀態(tài)片段痰腮,在調(diào)試的過程中也能輕易地取得整個(gè)當(dāng)前應(yīng)用狀態(tài)的快照。

單狀態(tài)樹和模塊化并不沖突——在后面的章節(jié)里我們會(huì)討論如何將狀態(tài)和狀態(tài)變更事件分布到各個(gè)子模塊中律罢。
在 Vue 組件中獲得 state里的狀態(tài)(數(shù)據(jù))呢
答:由于 Vuex 的狀態(tài)存儲(chǔ)是響應(yīng)式的膀值,從 store 實(shí)例中讀取狀態(tài)最簡單的方法就是在計(jì)算屬性中返回某個(gè)狀態(tài)
state是一個(gè)大對象 數(shù)據(jù)以鍵值對形式存在 。
語法: store.state.xxx

// 創(chuàng)建一個(gè) Counter 組件
const Counter = {
  template: `<div>{{ count }}</div>`,
  computed: {
    count () {
      return store.state.count
    }
  }
}

2. Getters 對象類型误辑,過濾state中的狀態(tài)
大白話:類似于vue中的computed沧踏,具有過濾狀態(tài)(數(shù)據(jù))的作用
Getter 接受 state 作為其第一個(gè)參數(shù):

const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, text: '...', done: true },
      { id: 2, text: '...', done: false }
    ]
  },
  getters: {
    doneTodos: state => {
      return state.todos.filter(todo => todo.done)
    }
  }
})

也可以通過屬性去訪問
Getter 會(huì)暴露為 store.getters 對象,你可以以屬性的形式訪問這些值:

store.getters.doneTodos // -> [{ id: 1, text: '...', done: true }]

Getter 也可以接受其他 getter 作為第二個(gè)參數(shù):

getters: {
  // ...
  doneTodosCount: (state, getters) => {
    return getters.doneTodos.length
  }
}
store.getters.doneTodosCount // -> 1

3. Mutations 對象類型巾钉,同步方法存儲(chǔ)位置翘狱,用來直接操作state里的狀態(tài)
更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation。Vuex 中的 mutation 非常類似于事件:每個(gè) mutation 都有一個(gè)字符串的 事件類型 (type) 和 一個(gè) 回調(diào)函數(shù) (handler)砰苍。這個(gè)回調(diào)函數(shù)就是我們實(shí)際進(jìn)行狀態(tài)更改的地方潦匈,并且它會(huì)接受 state 作為第一個(gè)參數(shù),傳進(jìn)來的參數(shù)作為第二個(gè)參數(shù)(是一個(gè)對象):

const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    increment (state) {
      // 變更狀態(tài)
      state.count++
    }
  }
})
mutations: {
  increment (state, n) {
    state.count += n
  }
}

組件內(nèi)如何調(diào)用Mutations里的方法呢赚导?
答:store.commit('方法名')
4. Actions 對象類型茬缩,異步方法的存放位置,不可直接操作state吼旧,通過調(diào)用mutations里的方法操作state凰锡。

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  actions: {
    increment (context) {
      context.commit('increment')
    }
  }
})

Action 函數(shù)接受一個(gè)與 store 實(shí)例具有相同方法和屬性的 context 對象,因此你可以調(diào)用 context.commit 提交一個(gè) mutation黍少,或者通過 context.state 和 context.getters 來獲取 state 和 getters寡夹。
組件內(nèi)調(diào)用actions里的方法
語法:store.dispatch('方法名')

5. Modules 對象類型,模塊化state
由于使用單一狀態(tài)樹厂置,應(yīng)用的所有狀態(tài)會(huì)集中到一個(gè)比較大的對象菩掏。當(dāng)應(yīng)用變得非常復(fù)雜時(shí),store 對象就有可能變得相當(dāng)臃腫昵济。

為了解決以上問題智绸,Vuex 允許我們將 store 分割成模塊(module)。每個(gè)模塊擁有自己的 state访忿、mutation瞧栗、action、getter海铆、甚至是嵌套子模塊——從上至下進(jìn)行同樣方式的分割:

const moduleA = {
  state: () => ({ ... }),
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}

const moduleB = {
  state: () => ({ ... }),
  mutations: { ... },
  actions: { ... }
}

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

store.state.a // -> moduleA 的狀態(tài)
store.state.b // -> moduleB 的狀態(tài)

vuex就簡單介紹到這里迹恐,想要繼續(xù)學(xué)習(xí)的小伙伴請參考
【vuex是什么?】https://vuex.vuejs.org/zh/

三丶Vuex和本地存儲(chǔ)的區(qū)別

1. 相同點(diǎn)

---------都可以存儲(chǔ)數(shù)據(jù)

2. 不同點(diǎn)

--------Vuex是vue的全局狀態(tài)管理卧斟,是將數(shù)據(jù)狀態(tài)存儲(chǔ)在內(nèi)存中的殴边,而H5存儲(chǔ)是存儲(chǔ)在本地(localStorage)和會(huì)話存儲(chǔ)(sessionStorage)
--------Vuex主要用于組件之間的傳值(單html)憎茂,本地存儲(chǔ)用于多頁面之間傳值(多html)
--------生命周期:Vuex是存儲(chǔ)于內(nèi)存的,只要頁面刷新(F5刷新锤岸,清除內(nèi)存)時(shí)竖幔,vuex存儲(chǔ)的值就會(huì)丟失,這時(shí)就需要vuex數(shù)據(jù)持久化是偷,可以通過下載vuex-persistedstate模塊解決(原理還是利用本地存儲(chǔ)技術(shù))拳氢,SessionStorage是會(huì)話級(jí)存儲(chǔ),窗口關(guān)閉就是清除蛋铆,LocalStorage是永久性存儲(chǔ)馋评,除非清理緩存,否則永久性存儲(chǔ)在本地戒职。

以上就是Vuex和本地存儲(chǔ)的簡單介紹了栗恩!今天又是昏昏欲睡的一天,我是前端小白Sunshine洪燥,大家如有更好的理解也可以聯(lián)系我磕秤,這樣我就又可以學(xué)習(xí)一波了,那今天就到這里了捧韵,拜拜市咆!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市再来,隨后出現(xiàn)的幾起案子蒙兰,更是在濱河造成了極大的恐慌,老刑警劉巖芒篷,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搜变,死亡現(xiàn)場離奇詭異,居然都是意外死亡针炉,警方通過查閱死者的電腦和手機(jī)挠他,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篡帕,“玉大人殖侵,你說我怎么就攤上這事×眨” “怎么了拢军?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怔鳖。 經(jīng)常有香客問我茉唉,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任赌渣,我火速辦了婚禮魏铅,結(jié)果婚禮上昌犹,老公的妹妹穿的比我還像新娘坚芜。我一直安慰自己,他們只是感情好斜姥,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布鸿竖。 她就那樣靜靜地躺著,像睡著了一般铸敏。 火紅的嫁衣襯著肌膚如雪缚忧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天杈笔,我揣著相機(jī)與錄音闪水,去河邊找鬼。 笑死蒙具,一個(gè)胖子當(dāng)著我的面吹牛球榆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播禁筏,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼持钉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篱昔?” 一聲冷哼從身側(cè)響起每强,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎州刽,沒想到半個(gè)月后空执,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡穗椅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年辨绊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片房待。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邢羔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桑孩,到底是詐尸還是另有隱情拜鹤,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布流椒,位于F島的核電站敏簿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惯裕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一温数、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜻势,春花似錦撑刺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挠铲,卻和暖如春冕屯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拂苹。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工安聘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瓢棒。 一個(gè)月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓浴韭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親音羞。 傳聞我的和親對象是個(gè)殘疾皇子囱桨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345