摘要:在模板中放入太多的邏輯會讓模板過重且難以維護。它會根據控件類型自動選取正確的方法來更新元素。指令需要使用的語法,指的是原數據數組,指的是迭代的數組元素。
注:本教程所使用的vue版本為 2.5.16
MVC與MVVM
MVC(Model-View-Controller):
M指的是從后臺獲取到的數據, V指的是顯示動態(tài)數據的html頁面, C是指響應用戶操作、經過業(yè)務邏輯處理后去更新視圖的過程,在此過程中會導致對view層的引用。
這里我們發(fā)現我們網站的大量代碼都被放在Controller,導致Controller代碼臃腫;而且不利于單元測試,因為業(yè)務邏輯處理和視圖更新操作會混雜在一起。
MVVM (Model-View-ViewModel):
MVVM是MVC的一個衍生模型,這里的 ViewModel 把業(yè)務邏輯處理、用戶輸入驗證等跟視圖更新操作分離開了。MVVM是數據驅動的,我們只需要關心數據的處理邏輯即可,它會通過模板渲染去多帶帶處理視圖的更新而不需要我們親自去操作Dom元素。
實例化Vue對象
Vue會將渲染模板結合數據對象生成的html結構替換掉根節(jié)點,只要數據對象上的message發(fā)生改變,插值處的內容就會跟著改變,上述例子的實際效果如下:
message: hello world
模板語法
上面的雙大括號綁定是vue最常用的數據綁定方式,除了雙大括號還可以使用v-text屬性進行綁定
message:
如果要綁定html結構的話,需要使用到v-html指令,否則vue會把這段html代碼看成字符串直接綁定到對應位置
new Vue({ el: "#app", data:{ message: "hello world", html: "hello world" }, template: "message:" })
需要綁定html元素特性的時候需要使用v-bind指令,v-bind可以省略
雙大括號的插值方法還可以使用js表達式,這些表達式會在所屬 Vue 實例的數據作用域下被解析
{{ number + 1 }} {{ boolean ? "true" : "false" }} {{ message.split("").reverse().join("") }}
注意,這里的javascript語句只能是單個表達式,其他的聲明變量、流程控制語法都不會生效
事件綁定
除了數據綁定外,vue還幫我們優(yōu)化了事件綁定流程,指令為v-on,可縮寫為@,后面是事件名稱
打印1 打印1
僅僅一句js表達式是不夠支撐我們的日常開發(fā)的,所以vue給我們提供了自定義事件處理方法
new Vue({ el: "#app", data: { message: "hello world" }, //log為methods中定義的函數名,vue會默認把原生DOM事件對象當做參數傳到處理函數中 template: "Click Me", methods: { log: function(event){ console.log(this.message); event.stopPropagation(); } } });
除了直接綁定到一個方法,也可以在內聯 JavaScript 語句中調用方法
Click Me
計算屬性 computed
模板內的表達式非常便利,但是設計它們的初衷是用于簡單運算的。在模板中放入太多的邏輯會讓模板過重且難以維護。例如這個字符串反轉:
{{ message.split("").reverse().join("") }}
這種情況我們可以用 computed 解決
new Vue({ el: "#app", data: { message: "hello" }, template: "{{ reversedMessage }}", //olleh computed: { reversedMessage: function(){ return this.message.split("").reverse().join(""); } } });
這里看渲染模板就直觀多了
監(jiān)聽屬性 watch
Vue 提供了 watch 這種通用的方式來觀察和響應 Vue 實例上的數據變動
問題:
{{ answer }}
表單綁定,指令為 v-model
v-model 指令在表單 及
Message: {{ message }}
單個復選框
data: { checked: true }
多個復選框的情況下,把v-model綁定到同一個數組即可:
data: { checkedColor: [] }
單選按鈕
data: { checkedRadio: "" }
條件渲染
在javascript語法中有if-else等流程語句讓程序執(zhí)行不同的代碼塊,在vue中同樣有 v-if、v-else-if、v-else 這些指令控制某些節(jié)點的顯示與否
在上述例子中,我們點擊 button 會顯示不同的dom,但是如果我們在input里面輸入文字再進行切換的時候會發(fā)現,輸入的文字并不會被清除,這是因為vue的 就地復用 策略導致的。vue為了盡可能高效地渲染dom元素,通常會復用已有元素而不是從頭開始渲染,如果不想vue復用這些元素,我們可以添加一個具有唯一值的 key 屬性
另一個用于根據條件展示元素的選項是 v-show 指令。用法大致一樣:
Hello!
v-if 與 v-show 區(qū)別:
v-if 是惰性渲染,在初始渲染時條件為假,什么也不做——直到條件第一次變?yōu)檎鏁r,才會開始渲染條件塊;在切換過程中條件塊內的事件監(jiān)聽器和子組件會被銷毀和重建。
v-show 不管初始條件是什么,元素總會被渲染,切換的只是css的display屬性
列表渲染
我們用 v-for 指令根據一組數據表進行列表渲染。v-for 指令需要使用 item in list 的語法,list指的是原數據數組,item指的是迭代的數組元素。v-for 指令還支持一個可選的表示當前迭代元素索引的第二個參數 (item, index) in list
- {{ item.text }}
除了數組,v-for指令還可以通過一個對象的屬性來迭代,v-for 指令最多可以支持3個參數,第二第三個可選。
Vue的生命周期
根據上圖做了一個測試例子,列出了每個生命周期對應的不同屬性的狀態(tài)
{{message}}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108012.html
摘要:與綁定數據綁定一個常見需求是操作元素的列表和它的內聯樣式。兩者只能選其一對象語法我們可以傳給一個對象,以動態(tài)地切換。注意不支持語法。相比之下,簡單得多元素始終被編譯并保留,只是簡單地基于切換。這意味著將分別重復運行于每個循環(huán)中。 vue Class 與 Style 綁定 數據綁定一個常見需求是操作元素的 class 列表和它的內聯樣式。因為它們都是屬性,我們可以用 v-bind 處理...
摘要:菜鳥教程這是一個屬性其值是字符串菜鳥教程同上這是一個屬性其值是字符串用于定義的函數,可以通過來返回函數值。它們都有前綴,以便與用戶定義的屬性區(qū)分開來。 開篇語 我最近學習了js,取得進步,現在學習vue.js.建議新手學習,請不要用npm的方式(vue-cli,vue腳手架),太復雜了. 請直接下載vue.js文件本地引入,就上手學習吧參照菜鳥教程網站的vue.js教程http://...
摘要:這個問題應該是百度或者知乎都能知道答案的,以上是自己親身學習的一些途徑方便少走一點彎路入門。 問題1:前端的學習路線 基礎的html,css,js,推薦慕課網免費課程:前端工程師路徑,極客學院免費課程:前端工程師路徑 大概刷過就可以了,不用死記硬背某個知識點,css跟js還需要加深學習的,在實戰(zhàn)過程中不懂就去查文檔 基礎的ps切圖能力 慕課網ps基礎課程 擁有自己的虛擬主機 傳送...
閱讀 2311·2021-11-25 09:43
閱讀 2946·2019-08-30 15:52
閱讀 1898·2019-08-30 15:44
閱讀 986·2019-08-30 10:58
閱讀 765·2019-08-29 18:43
閱讀 3220·2019-08-29 18:36
閱讀 2322·2019-08-29 17:02
閱讀 1462·2019-08-29 17:01