Vuex

什么是Vuex?詳述Vuex的工作流程

官方介紹:Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。

Vuex其實就是一個Vue的集中狀態(tài)管理工具,類似于redux,但使用方法很明顯優(yōu)化了許多

什么時候使用Vuex?

官方的話說,在你需要用的時候自然而然就知道自己什么時候要用了

在我看來,當(dāng)項目需要使用公共數(shù)據(jù),并且這個公共數(shù)據(jù)的訪問量較大的時候,我們可以使用Vuex,用來集中管理公共的數(shù)據(jù),而一些小型的項目,我們可以靠中央通信總線的發(fā)布訂閱模式來實現(xiàn)數(shù)據(jù)管理與通信

Vuex的工作流程

首先通過dispatch提交一個action

在action中我們可以執(zhí)行一些異步的操作,或者根據(jù)不同的情況分發(fā)不同的mutation

接著在action中調(diào)用commit,觸發(fā)一個mutation

所有修改state的操作,全部應(yīng)該放在mutation中來做

而state更新之后,會調(diào)用Vue的底層方法,通知視圖進(jìn)行更新渲染

Vuex不像redux,redux在任何項目工程內(nèi)都可以使用,不僅限于react,但是Vuex是基于Vue的底層實現(xiàn)的一個狀態(tài)管理工具,其實Vuex中的store本質(zhì)就是沒有template的隱藏著的vue組件

詳述Vuex的核心屬性及使用

state

state存儲了Vuex的基本數(shù)據(jù),在state中存儲的數(shù)據(jù)都是經(jīng)過Vue底層watcher偵聽的數(shù)據(jù),可以實現(xiàn)響應(yīng)式數(shù)據(jù)

actions

actions存放了Vuex中所有的異步操作,可以在actions中通過commit分發(fā)不同的mutation,在不同的情況下執(zhí)行不同的方法

mutations

mutations存放了Vuex中所有關(guān)于state的操作,修改state只能通過mutations,否則的話數(shù)據(jù)不會響應(yīng)式更新

getters

getters就類似與Vue實例中的computed,計算屬性,所有關(guān)于數(shù)據(jù)的復(fù)雜計算應(yīng)該放在getters中來操作

modules

modules,類似于redux中的reducer,每一個module都擁有自己的state、mutations、actions、getters;將整個store根據(jù)功能或者數(shù)據(jù)分解成不同的模塊,最后合并在一個Store中

Vuex的使用

importVuefrom'vue'importVuexfrom'vuex'Vue.use(Vuex);// 這里我就不貼出對應(yīng)模塊的代碼了exportdefaultnewVuex.Store({modules: {? ? ? ? shopCart,// 購物車模塊user// 用戶模塊}})// 使用模塊import{mapState,mapActions,mapMutations,mapGetters}from'vuex';// Vue實例exportdefault{computed: {? ? ? ? ...mapState(['user','shopCart']),// 拿到store中的user模塊和shopCart模塊...mapGetters(['total'])// 拿到getters計算屬性中的總價,不區(qū)分模塊},methods: {? ? ? ? ...mapActions(['getUserData']),// 拿到actions中的getUserData方法,不區(qū)分模塊...mapMutations(['addGoodsToShopCart'])// 拿到mutations中的addGoodsToShopCart方法}}

Vue和Jquery的區(qū)別

Jquery直接操作DOM,使用選擇器以及便捷的DOM操作方式來修改視圖以及數(shù)據(jù)

Vue不直接操作DOM,而是通過雙向數(shù)據(jù)綁定的方式,將DOM節(jié)點在Vue內(nèi)部轉(zhuǎn)化對象的形式,通過修改數(shù)據(jù)直接修改視圖

Jquery是一個前端類庫,只是提供了很多便捷操作DOM的方法,而Vue是一個框架,有一套完整的體系

Vue中的slot是什么?

在Vue中,我們一般使用UI界面來劃分組件,而每一個UI界面可以劃分很多個組件,不同的UI界面中難免會有相似之處,這種相似的地方,我們?nèi)绾瓮ㄟ^一種優(yōu)雅的方式來達(dá)到復(fù)用這個UI組件呢?就是使用slot插槽了

slot插槽,其實就是用來做內(nèi)容分發(fā),使得可以最大程度的復(fù)用組件,達(dá)到每次使用同一個組件的時候可以根據(jù)情況創(chuàng)建不同的內(nèi)容的功能

匿名插槽

不具有name屬性的slot就是匿名插槽,也可以叫默認(rèn)插槽

由父組件提供樣式和內(nèi)容,子組件只負(fù)責(zé)顯示

匿名插槽/默認(rèn)插槽只可以使用一次

<slot>里邊寫的是默認(rèn)值</slot>

在子組件內(nèi)定義slot時,內(nèi)部可以定義默認(rèn)值,當(dāng)父組件有內(nèi)容分發(fā)的時候,顯示父組件的內(nèi)容,沒有的時候,顯示默認(rèn)內(nèi)容

具名插槽

有name屬性

在組件中可以使用N次(name值不同的情況下)

父組件通過html模板上的slot屬性關(guān)聯(lián)具名插槽

<template v-slot:插槽名稱><div>插槽內(nèi)容</div></template>

沒有slot屬性的html模板默認(rèn)關(guān)聯(lián)匿名模板

父組件提供樣式和內(nèi)容

<slot name="插槽名稱"></slot>

作用域插槽(帶數(shù)據(jù)的插槽)

父組件只提供樣式,子組件提供內(nèi)容

在slot上面綁定數(shù)據(jù)

子組件的值可以傳給父組件使用

父組件展示子組件數(shù)據(jù)有3種方式:flex顯示、列表顯示、直接顯示

使用v-slot必須使用template;之前使用的是slot-scope,但是這個屬性已經(jīng)在2.6.0廢棄了,現(xiàn)在使用v-slot指令來代替原有的slot-scope屬性

scope返回的值是slot標(biāo)簽上返回的所有屬性值,并且是一個對象的形式保存起來

// 子組件中// 父組件中{{item}}{{scope.message}}

SPA首屏加載慢,該如何解決?

抽取css文件

使用CDN資源

使用路由模塊化加載

按照頁面或者組件分塊懶加載

使用gzip減小網(wǎng)絡(luò)傳輸?shù)牧髁看笮?/p>

使用服務(wù)端渲染的方式

使用預(yù)渲染的方式




菜鳥一枚,多多關(guān)照,出現(xiàn)錯誤請大家及時告知, 謝謝!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內(nèi)容