VUE.JS

<meta charset="utf-8">

npm: Nodejs下的包管理器(node package manager)。也可以用yarn。

webpack: 它主要的用途是通過CommonJS的語法把所有瀏覽器端需要發(fā)布的靜態(tài)資源做相應(yīng)的準(zhǔn)備,比如資源的合并和打包。

vue-cli: 用戶生成Vue工程模板。(幫你快速開始一個vue的項目,也就是給你一套vue的結(jié)構(gòu),包含基礎(chǔ)的依賴庫,只需要 npm install就可以安裝)

環(huán)境搭建

1.node

2.npm(node自帶)

3.cnpm

4.vue-cli

5.wabpack npm install webpack webpack-cli -g

6.devtools

VUE的三種引入方式

1.下載vue.js,本地src絕對路徑

2.CDN的方式,在線引用,src="https://cdn.boots.com/vue/2.5"

3.vue-cli腳手架的方式。

計算屬性與偵聽器

computed與watch

computed是監(jiān)聽一個變量的變化,例子里是監(jiān)聽msg變量,參數(shù)是新值和舊值。

watch是監(jiān)聽fuction函數(shù)中的所有變量的變化,前提是這些變量都包含在VUE示例里面。

v-if、v-else-if、v-else

v-for

v-show

新建VUE工程有兩種方法,$ vue create hello-word 和vue-ui ui界面可視化

引入的時候,@符號代表src目錄。加上后綴,組成絕對路徑。

組件化:思想

什么是組件化?

獨立的、可復(fù)用的、整體化的

為什么要組件化?

實現(xiàn)功能模塊的復(fù)用

高執(zhí)行效率

開發(fā)單頁面復(fù)雜應(yīng)用,做拆分

如何拆分?

300行原則

復(fù)用原則

業(yè)務(wù)復(fù)雜性原則

組件化帶來的問題:

組件狀態(tài)管理(vuex)

多組件的混合使用,多頁面,復(fù)雜業(yè)務(wù)(vue-router)

組件間的傳參、消息、事件管理(props,emit/on,bus)

組件就是指單文件vue文件,this指的是組件本身。

Vue開發(fā)調(diào)試:

1.Vue的Chrome插件

2.console.log(),aler()(阻塞),debugger

3.vm實例,window對象綁定。

Vue-router

VueX

4.png

vuex的使用可以分為不同程度,如果單純的想使用全局對象,又要用vuex,那只使用簡單的store模式即可。

① 那vuex和全局對象有什么不同

1.vuex狀態(tài)是響應(yīng)式的。store中的數(shù)據(jù)發(fā)生變化,相應(yīng)的組件會得到高效的更新。

2.全局變量可以隨時改變其值,通過store.state.count的方式,vuex則不可以,改變store中狀態(tài)的唯一途徑就是顯示地提交(commit)mutations(為什么這么做?:這個簡單的約定,使代碼可讀性增強,且給vue帶來的一個可以記錄狀態(tài)變化的入口,或者說是媒介)。

通過{{}}模板是無法直接使用store對象的。

在vue根實例注冊store選項,vue會將store實例注入到根組件下的所有子組件中,這樣子組件都可以以通過this.$store訪問到。

②如果store的屬性需要運算,使用getters(防止大量引用store時,計算邏輯代碼的重復(fù))

簡單理解getters和計算屬性computed選項基本一致。

const store = new Vuex.Store({ state: { date: new Date() }, getters: { // Getter 接受 state 作為其第一個參數(shù) weekDate: (state) => (fm) => { return moment(state.date).format(fm ? fm : 'dddd'); } } })

可以通過getters選項,對store的state屬性進(jìn)行運算,方式為在getters中添加function,可以傳入的參數(shù)包括:state屬性、其它參數(shù)。

使用的時候,通過store.getters.weekDate('MM Do YY')即可。

③那么如何修改store中的state屬性呢(只有mutation能動state)

const store = new Vuex.Store({ state: { count: 1 }, mutations: { // 事件類型 type 為 increment increment (state num) { // 變更狀態(tài) state.count = num } } })

通過mutations選項,構(gòu)建function修改state屬性。可以自定義參數(shù)

調(diào)用時必須使用commit關(guān)鍵字。store.commit('increment',100)

mutations中的這個額外的參數(shù),官方稱為載荷(payload),提交載荷。

對于修改state屬性的mutations方法名稱,如果是大項目,最好通過引入常量的方式,使用方式和axios中引用url一樣。

另外,mutations的function必須是同步函數(shù),如果是異步,就沒法偵聽數(shù)據(jù)的變化了。

④那如果mutatios的函數(shù)必須是異步怎么辦呢

就要用到action選項,mutations通過commit調(diào)用,action通過dispatch調(diào)用。

使用action最大的好處就是在action中定義異步函數(shù),然后通過commit觸發(fā)mutations函數(shù),這樣的話所有的狀態(tài)變更都能追蹤的到,無論是同步變更的還是異步變更。

⑤vuex的常用的輔助函數(shù)(極簡的方式寫vuex代碼--語法糖)

四個常用輔助函數(shù):mapState、mapGetters、mapMutations、mapActions

分別于vuex四家馬車state(狀態(tài))、getters(狀態(tài)值運算)、mutations(同步函數(shù)改變狀態(tài)值)、actions(異步函數(shù)改變狀態(tài)值)

目的就是簡化四個選項代碼復(fù)雜度。

⑥Vuex的管理員Module(大型項目使用)

分支管理,類似router一樣的效果。

由于四架馬車都是全局命名,所以局部管理略微復(fù)雜。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容