MVVM到底是什麼?看它就夠了

2021-10-19 07:53:59 字數 2744 閱讀 7156

這套前端面試題我會持續更新的,我不想用太多文字去解釋"題",而是用**去解釋問題,所以我們不要渴望通過背提綱來提公升自己,看原始碼找答案

mvvm即m(模型層)+v(檢視層)+vm(檢視模型層)

當模型層中的資料發生改變時 通過檢視模型層可以修改與之繫結的檢視層的資料(單向繫結)

當檢視層發生改動時,通過檢視模型曾與之繫結的模型層的資料頁發生改變(雙向繫結) 這種現象成為mvvm思想

總結:mvvm就是vue雙向繫結的思想

那麼這三個模組都是**中的哪一部分,上一段html**說明問題

什麼是mvvmtitle

>

head

>

>

"myh2"

>

h2>

type

="text"

>

>

//model

let msg =

"welecome"

//view model

let node =document.

getelementbyid

("myh2"

) node.innerhtml =msg

script

>

body

>

html

>

打個比方view就像是乙個縣,model就好比是縣長和它的領導班子,view model就是一部火車讓縣長的領導班子愉快的去縣城就職(沒有麻匪的事!)

**一執行?

msg就出現在了h2裡面

其實很簡單 v-model雙向繫結它實現了view直接影響model的壯舉,它是這麼實現的(簡單模擬一下)

什麼是mvvmtitle

>

head

>

>

"myh2"

>

h2>

type

="text"

id="myinput"

>

>

//model

let msg =

"welcome"

//view-model

window.

onload

=function()

)}script

>

body

>

html

>

**應該很好理解,由此一來就實現了view影響model實現了雙向繫結繼而體現了mvvm的思想

想要一次性的在載入完畢以後就繫結完畢,從此再無瓜葛

v-once

>

}p>

vue例項

msg:'loveu3000'
這麼一來就賦值了一下,任由你再改msg的值 檢視層也不會有變化

什麼是xss攻擊?

innerhtml可以插入標籤,惡意者可以修改裡面的**塊,從而達到載入頁面執行自己插入的

**的目的

下面這麼做就很危險?

type

="text"

v-model

="msg"

/>

v-html

="msg"

>

div>

// 因為使用者輸入的資訊不可信,這樣輸入什麼就會放入什麼,v-html就相當於乙個innerhtml

不過v-html只能執行html和css(與innnerhtml一樣) 插入的內容如果繫結了事件即使解析了也不會觸發,所以vue還是防止了xss攻擊

v-html

="value"

>

看看我被覆蓋了嗎p

>

vue例項

value:

'我是插入的超文字'

,

執行一下會發現只剩下"我是插入的超文字了"…

原創內容喜歡的話點讚支援一下吧,這個面試題的專欄我會持續更新的~~麼麼噠

敏捷到底是什麼?

文 ivar jacobson 在支援軟體工程 比如rational統一過程rup 與敏捷陣營 比如scrum或是xp 之間,人們一直存在著衝突。也不難理解,因為這兩種方法間都是在用著彼此並不相容的方式來描述的。其實大可不必,因為他們背後的觀點全然是相輔相成的。關鍵在於該如何用對兩者來說都公平的方式...

我們到底是什麼?

我們到底是什麼?我們是一種生物電流 生物電流有幾種狀態,喜怒哀樂等,可以根據外部環境進行自我切換 該種生物電流附屬在一種器官硬體上面 我們可以從器官硬體上感知一些資訊,產生新的資訊生物電流,新產生的生物電流符合原先的標準 我們可以把資訊電流儲存在器官硬體上,但具體如何儲存等資訊無法被我們感知 我們的...

SDN到底是什麼

sdn到底是什麼?雖然這個概念已經被炒到了,但還沒有人對其給出乙個明確的概念。盛科網路總監張衛峰撰寫了自己關注sdn以來,對其認識的四個階段,最後乙個階段又回到了sdn字面的意思軟體定義網路,每個階段作者的新觀點,也會給我們帶來一些啟發。以下為原文 我對sdn的認識可以分為四個階段,最後乙個階段是在...