vue.js

一個(gè) Vue 應(yīng)用由一個(gè)通過 new Vue 創(chuàng)建的根 Vue 實(shí)例,以及可選的嵌套的、可復(fù)用的組件樹組成。

then()方法是異步執(zhí)行
就是當(dāng).then()前的方法執(zhí)行完后再執(zhí)行then()內(nèi)部的程序

import 語句 用于從一個(gè)已經(jīng)導(dǎo)出的外部模塊或另一個(gè)腳本中導(dǎo)入函數(shù),對象或原始類型。
import命令具有提升效果,會提升到整個(gè)模塊的頭部,首先執(zhí)行。
由于import是靜態(tài)執(zhí)行,所以不能使用表達(dá)式和變量,這些只有在運(yùn)行時(shí)才能得到結(jié)果的語法結(jié)構(gòu)。

export 語句 用于從給定的文件 (或模塊) 中導(dǎo)出函數(shù),對象或原語。
export命令除了輸出變量,還可以輸出函數(shù)或類(class)。
export語句輸出的接口,與其對應(yīng)的值是動態(tài)綁定關(guān)系,即通過該接口,可以取到模塊內(nèi)部實(shí)時(shí)的值。
axios

export default命令,為模塊指定默認(rèn)輸出。
第一組是使用export default時(shí),對應(yīng)的import語句不需要使用大括號;第二組是不使用export default時(shí),對應(yīng)的import語句需要使用大括號。
本質(zhì)上,export default就是輸出一個(gè)叫做default的變量或方法,然后系統(tǒng)允許你為它取任意名字。
export default命令其實(shí)只是輸出一個(gè)叫做default的變量,所以它后面不能跟變量聲明語句。

生命周期
created
mounted
updated
destroyed

父子組件間的通訊
父組件的數(shù)據(jù)向子組件通訊是通過props傳遞的
子組件的內(nèi)部數(shù)據(jù)狀態(tài)發(fā)生改變要通知父組件api接口發(fā)送請求刷新數(shù)據(jù)是通過事件來傳遞
引用類型,不能直接改變,要用深拷貝避免影響父組件 42:51

props down events up?

非父子組件間的通訊
全局事件管理,bus
在簡單的場景下,可以使用一個(gè)空的 Vue 實(shí)例作為中央事件總線

單向數(shù)據(jù)流
prop 是單向綁定的:當(dāng)父組件的屬性變化時(shí),將傳導(dǎo)給子組件,但是不會反過來。這是為了防止子組件無意修改了父組件的狀態(tài)——這會讓應(yīng)用的數(shù)據(jù)流難以理解。
另外,每次父組件更新時(shí),子組件的所有 prop 都會更新為最新值。這意味著你不應(yīng)該在子組件內(nèi)部改變 prop。如果你這么做了,Vue 會在控制臺給出警告。
為什么我們會有修改 prop 中數(shù)據(jù)的沖動呢?通常是這兩種原因:
prop 作為初始值傳入后,子組件想把它當(dāng)作局部數(shù)據(jù)來用;

prop 作為初始值傳入,由子組件處理成其它數(shù)據(jù)輸出。

對這兩種原因,正確的應(yīng)對方式是:
1.定義一個(gè)局部變量,并用 prop 的值初始化它:
props: ['initialCounter'],
data: function () {
return { counter: this.initialCounter }
}

2.定義一個(gè)計(jì)算屬性,處理 prop 的值并返回。
props: ['size'],
computed: {
normalizedSize: function () {
return this.size.trim().toLowerCase()
}
}

用 Vue.js 添加雙向綁定:
<input v-model="xxx">
上面的代碼基本等價(jià)于
<input :value="xxx" @input="xxx = $event.target.value">
也就是說:
雙向綁定 = 單向綁定 + UI 事件監(jiān)聽

注意在 JavaScript 中對象和數(shù)組是引用類型,指向同一個(gè)內(nèi)存空間,如果 prop 是一個(gè)對象或數(shù)組,在子組件內(nèi)部改變它會影響父組件的狀態(tài)。

Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。
Vuex 和單純的全局對象有以下兩點(diǎn)不同:
1.Vuex 的狀態(tài)存儲是響應(yīng)式的。當(dāng) Vue 組件從 store 中讀取狀態(tài)的時(shí)候,若 store 中的狀態(tài)發(fā)生變化,那么相應(yīng)的組件也會相應(yīng)地得到高效更新。
2.你不能直接改變 store 中的狀態(tài)。改變 store 中的狀態(tài)的唯一途徑就是顯式地提交(commit) mutations。這樣使得我們可以方便地跟蹤每一個(gè)狀態(tài)的變化,從而讓我們能夠?qū)崿F(xiàn)一些工具幫助我們更好地了解我們的應(yīng)用。

可以通過 store.state 來獲取狀態(tài)對象,以及通過 store.commit 方法觸發(fā)狀態(tài)變更

globalData 就叫做全局?jǐn)?shù)據(jù)源,管理所有的數(shù)據(jù)。
用 Vue.js 添加雙向綁定:
<input v-model="xxx">
實(shí)際上,雙向綁定不是魔法,上面的代碼基本等價(jià)于
<input :value="xxx" @input="xxx = $event.target.value">
也就是說:
雙向綁定 = 單向綁定 + UI 事件監(jiān)聽
單向綁定使得數(shù)據(jù)流也是單向的,對于復(fù)雜應(yīng)用來說這是實(shí)施統(tǒng)一的狀態(tài)管理(如redux)的前提。
雙向綁定在一些需要實(shí)時(shí)反應(yīng)用戶輸入的場合會非常方便(比如多級聯(lián)動菜單)。但通常認(rèn)為復(fù)雜應(yīng)用中這種便利比不上引入狀態(tài)管理帶來的優(yōu)勢。
單向綁定犧牲一部分的便捷性,換來更大的「控制力」。

單向綁定的優(yōu)點(diǎn)是相應(yīng)的可以帶來單向數(shù)據(jù)流,這樣做的好處是所有狀態(tài)變化都可以被記錄、跟蹤,狀態(tài)變化通過手動調(diào)用通知,源頭易追溯,沒有“暗箱操作”。同時(shí)組件數(shù)據(jù)只有唯一的入口和出口,使得程序更直觀更容易理解,有利于應(yīng)用的可維護(hù)性。缺點(diǎn)則是代碼量會相應(yīng)的上升,數(shù)據(jù)的流轉(zhuǎn)過程變長,從而出現(xiàn)很多類似的樣板代碼。同時(shí)由于對應(yīng)用狀態(tài)獨(dú)立管理的嚴(yán)格要求(單一的全局store),在處理局部狀態(tài)較多的場景時(shí)(如用戶輸入交互較多的“富表單型”應(yīng)用),會顯得啰嗦及繁瑣。
基本上雙向綁定的優(yōu)缺點(diǎn)就是單向綁定的鏡像了。優(yōu)點(diǎn)是在表單交互較多的場景下,會簡化大量業(yè)務(wù)無關(guān)的代碼。缺點(diǎn)就是由于都是“暗箱操作”,我們無法追蹤局部狀態(tài)的變化(雖然大部分情況下我們并不關(guān)心),潛在的行為太多也增加了出錯時(shí) debug 的難度。同時(shí)由于組件數(shù)據(jù)變化來源入口變得可能不止一個(gè),新手玩家很容易將數(shù)據(jù)流轉(zhuǎn)方向弄得紊亂,如果再缺乏一些“管制”手段,最后就很容易因?yàn)橐惶庡e誤操作造成應(yīng)用雪崩。這樣來看,單向綁定跟雙向綁定在功能上基本上是互補(bǔ)的,所以我們可以在合適的場景下使用合適的手段。比如在 UI控件 中(通常是類表單操作),我會使用雙向的方式綁定數(shù)據(jù);而其他場景則統(tǒng)一采用 單向 + inline event ( <component msg="msg" on-update="updateMsg(msg)"></component> ) 的方式構(gòu)建應(yīng)用。

單向綁定大概的思路就是:
1.所有的數(shù)據(jù)只有一份
2.一旦數(shù)據(jù)變化,就去更新頁面(data -> 頁面單向綁定)
3.如果用戶在頁面上做了變動,那么就把變動手動收集起來(而不是自動的),合并到先有的數(shù)據(jù)中

Vuex 簡介
Vuex 是適用于 Vue.js 應(yīng)用的狀態(tài)管理庫,為應(yīng)用中的所有組件提供集中式的狀態(tài)存儲與操作,保證了所有狀態(tài)以可預(yù)測的方式進(jìn)行修改。
Vuex 是單向數(shù)據(jù)流的一種實(shí)現(xiàn)。
核心概念
State
State 用來存狀態(tài)。在根實(shí)例中注冊了store 后,用this.$store.state
來訪問。
Getters
Getters 從 state 上派生出來的狀態(tài)。可以理解為基于 State 的計(jì)算屬性。很多時(shí)候,不需要 Getters,直接用 State 即可。
Mutations
Mutations 用來改變狀態(tài)。需要注意的是,Mutations 里的修改狀態(tài)的操作必須是同步的。在根實(shí)例中注冊了 store 后, 可以用this.$store.commit('xxx', data)
來通知 Mutations 來改狀態(tài)。
Actions
Actions 通過調(diào)用 Mutations 來改狀態(tài)。Actions 可以包含異步操作。在根實(shí)例中注冊了 store 后, 可以用this.$store.dispatch('xxx', data)
來存觸發(fā) Action。
Vuex 的完整流程
組件中觸發(fā) Action,Action 提交 Mutations,Mutations 修改 State。 組件根據(jù) State 或 Getters 來渲染頁面。

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

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