現(xiàn)在的各種開源項(xiàng)目中使用 Vue 的越來越多了,作為一個后端程序員不會點(diǎn) Vue 也都玩不轉(zhuǎn)了。所以抽空學(xué)習(xí)了一下 Vue 的簡單用法,整理成筆記,方便有需要的同學(xué)一起學(xué)習(xí)。
Vue 是一個前端的框架,被稱作是 漸進(jìn)式 JAVAScript 框架。在進(jìn)入 Vue 的官網(wǎng)時即可看到,上面圖的就是從 Vue 官網(wǎng)復(fù)制的。
什么是 漸進(jìn)式 框架,這里我們引用官網(wǎng)的原文來看,原文如下:
Vue (讀音 /vju?/,類似于 view) 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。與其它大型框架不同的是,Vue 被設(shè)計(jì)為可以自底向上逐層應(yīng)用。Vue 的核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項(xiàng)目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫結(jié)合使用時,Vue 也完全能夠?yàn)閺?fù)雜的單頁應(yīng)用提供驅(qū)動。 https://cn.vuejs.org/v2/guide/
Vue 可以作為整個前端開發(fā)的一部分,也可以作為一個整體。也就是說,可以使用 Vue 的部分功能來構(gòu)建前端,也可以完全使用 Vue 來構(gòu)建前端。大概就是這樣的意思。
一、Vue 的開始
Vue 的開始還是很方便的,只需要引入一個庫文件 —— Vue.js 即可開始。我們可以去 Vue 的官網(wǎng)下載,也可以通過 CDN 來直接引入 vue 都可以。這里我下載了 vue.min.js 文件。
創(chuàng)建一個 html 文件,然后引入 vue.min.js 文件,接著實(shí)現(xiàn)一個簡單的 Hello Vue 的程序。代碼如下:
{{message}}
在上面的代碼中,通過
單向綁定可以時 v-bind 也可以省略 v-bind,但是注意,冒號不能省略。上面的代碼中相當(dāng)于給 style 設(shè)置了 color:blue 屬性,運(yùn)行效果如下圖:
三、雙向綁定
雙向綁定通過指令 v-model 來完成,下面的代碼中,data 中的 keyword 會影響 div 中的兩個 input 框,第二個 input 框使用的 v-model 指令,那么當(dāng)改變第二個 input 框中的值時,同樣會改變 data 中 keyword 的值;又由于改變了 data 中 keyword 的值,從而第一個 input 框的值也會隨之改變。
{{keyword}}
運(yùn)行如下圖所示:
改變第二個 input 的值,如下圖所示:
可以看到,通過修改第二個 input 框的值,上面的值也跟著發(fā)生了改變。
四、事件綁定
事件綁定是對事件的監(jiān)聽,可以通過 v-on 或 @ 指令來完成,代碼如下:
事件綁定1 事件綁定2
上面的代碼中,通過 v-on 和 @ 將 Button 和 show() 方法進(jìn)行綁定,輸出如下圖所示:
上面的代碼中,在 Vue 對象中增加了 methods,在 methods 中可以用來定義方法。
五、條件指令
條件指令使用 v-if 和 v-else 來完成,看如下代碼:
選中了 沒有選中
上面的代碼中,通過 v-model 和 ok 來進(jìn)行雙向綁定,然后當(dāng)改變 checkbox 的選中狀態(tài)時,v-if 和 v-else 會自動改變文字描述。
六、循環(huán)指令
循環(huán)指令使用 v-for,它可以用來遍歷數(shù)組從而渲染一個列表,看如下代碼:
{{index+1}} -- {{user.name}} -- {{user.age}}
上面的代碼中 index 是一個循環(huán)的計(jì)數(shù)從 0 開始,然后循環(huán) userList json 數(shù)組,輸出如下圖:
七、Vue 生命周期
Vue 的生命周期,就是創(chuàng)建、銷毀 Vue 對象時會自動執(zhí)行的幾個函數(shù),Vue 的官網(wǎng)提供了一個生命周期圖,該圖的地址如下:
https://cn.vuejs.org/v2/guide/instance.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E5%9B%BE%E7%A4%BA
我這里從官網(wǎng)復(fù)制過來,如下圖。
在上圖中可以看到,不同的生命周期有不同的方法會被執(zhí)行,比如 created、updated、destroyed 等。
這里寫代碼進(jìn)行測試:
{{msg}}
在代碼的 created 和 mounted 兩處放入了 debugger 命令,打開 F12 的調(diào)試窗口時,當(dāng)執(zhí)行到 debugger 位置處時,會自動觸發(fā)斷點(diǎn)從而斷下,首先斷在 created 方法中,如下圖:
從上圖可以看出,此時的插值表達(dá)式并沒有進(jìn)行實(shí)際的替換,按 F8 讓頁面繼續(xù)渲染,會斷在 mounted 方法中,如下圖:
此時可以看到,插值表達(dá)式已經(jīng)變成了 hello。這樣可以清楚的看到不同的生命周期會觸發(fā)不同的方法。
八、axIOS 和 vue-resource 庫
axios 是基于 Promise 的 Ajax 的庫,在 Vue 中有一個 vue-resource 庫用于實(shí)現(xiàn)異步加載的庫。在 Vue.js 2.0 中推薦使用 axios 來完成 Ajax 的請求。這里給出演示的代碼,代碼如下:
{{index + 1}} {{user.name}} {{user.age}} {{index + 1}} {{it.name}} {{it.age}}
上面的代碼中,同時演示了 axios 和 vue-resource 兩個庫。代碼中直接請求了兩個 json 文件,并沒有去進(jìn)行實(shí)際的接口請求。
九、總結(jié)
Vue 的內(nèi)容不只有這么些,具體可以參考 Vue 的官網(wǎng)(https://cn.vuejs.org/v2/guide/)進(jìn)行學(xué)習(xí)和了解。這里只是列出了可能使用較為頻繁的部分。不對之初請予指正。