nodejs環(huán)境開發(fā)的區(qū)別是什么?
Vue通過虛擬DOM技術(shù)減少DOM操作。什么是虛擬DOM?使用js對象模擬DOM,在操作過程中不會直接操作DOM,等待虛擬DOM操作完成,僅僅比較開始和結(jié)束狀態(tài)虛擬DOM有哪些變換,最終根據(jù)結(jié)束狀態(tài)虛擬DOM去操作DOM。至于虛擬DOM怎么比較則是采用diff算法,具體算法我也不會。不過diff算法里有一個很好的措施來減少DOM操作。
(一)、優(yōu)先處理特殊場景
(1)、頭部的同類型節(jié)點、尾部的同類型節(jié)點
這類節(jié)點更新前后位置沒有發(fā)生變化,所以不用移動它們對應(yīng)的DOM
(2)、頭尾/尾頭的同類型節(jié)點
這類節(jié)點位置很明確,不需要再花心思查找,直接移動DOM就好
(二)、“原地復(fù)用”“原地復(fù)用”是指Vue會盡可能復(fù)用DOM,盡可能不發(fā)生DOM的移動。Vue在判斷更新前后指針是否指向同一個節(jié)點,其實不要求它們真實引用同一個DOM節(jié)點,實際上它僅判斷指向的是否是同類節(jié)點,如果是同類節(jié)點,那么Vue會直接復(fù)用DOM,例如通過對換文本內(nèi)容的方式,這樣的好處是不需要移動DOM。
2.Vue支持雙向數(shù)據(jù)綁定
數(shù)據(jù)綁定有單向數(shù)據(jù)綁定和雙向數(shù)據(jù)綁定。
什么是單向數(shù)據(jù)綁定?單向數(shù)據(jù)綁定即一方面只受另一方面影響,卻無法影響另一方面。前端常說的單向數(shù)據(jù)綁定一般都指數(shù)據(jù)影響頁面,而頁面不影響數(shù)據(jù)。
什么是雙向數(shù)據(jù)綁定?雙向的意思即兩個方面相互影響,前端來說,即數(shù)據(jù)影響頁面,頁面同時影響數(shù)據(jù)。例如,在 MVVM 框架中,View(視圖) 和 Model(數(shù)據(jù)) 是不可以直接通訊的,在它們之間存在著 ViewModel 這個中間介充當(dāng)著觀察者的角色。當(dāng)用戶操作 View(視圖),ViewModel 感知到變化,然后通知 Model 發(fā)生相應(yīng)改變;反之當(dāng) Model(數(shù)據(jù)) 發(fā)生改變,ViewModel 也能感知到變化,使 View 作出相應(yīng)更新。
舉個栗子v-model雙向綁定以上代碼將input的value和頁面顯示雙向綁定在一起。其實v-model只是語法糖,雙向綁定其實就等于單向綁定+UI時間監(jiān)聽,只不過Vue將過程采用黑箱封裝起來了。
那雙向綁定有什么好處?好處就是方便,數(shù)據(jù)自動更新。而缺點就是無法得知是哪里更改了數(shù)據(jù)。
3.Vue支持組件化
組件化的概念Web 中的組件其實就是頁面組成的一部分,好比是電腦中的每一個元件(如硬盤、鍵盤、鼠標(biāo)),它是一個具有獨立的邏輯和功能或界面,同時又能根據(jù)規(guī)定的接口規(guī)則進(jìn)行相互融合,變成一個完整的應(yīng)用,頁面就是有一個個類似這樣的部分組成,比如導(dǎo)航、列表、彈窗、下拉菜單等。頁面只不過是這些組件的容器,組件自由組合形成功能完善的界面,當(dāng)不需要某個組件,或者想要替換某個組件時,可以隨時進(jìn)行替換和刪除,而不影響整個應(yīng)用的運行。
組件化的特性高內(nèi)聚性,組建功能必須是完整的,如我要實現(xiàn)下拉菜單功能,那在下拉菜單這個組件中,就把下拉菜單所需要的所有功能全部實現(xiàn)。
低耦合度,通俗點說,代碼獨立不會和項目中的其他代碼發(fā)生沖突。在實際工程中,我們經(jīng)常會涉及到團(tuán)隊協(xié)作,傳統(tǒng)按照業(yè)務(wù)線去編寫代碼的方式,就很容易相互沖突,所以運用組件化方式就可大大避免這種沖突的存在、
每一個組件都有子集清晰的職責(zé),完整的功能,較低的耦合便于單元測試和重復(fù)利用。
組件化的優(yōu)點1.提高開發(fā)效率 2.方便重復(fù)使用 3.簡化調(diào)試步驟 4.提升整個項目的可維護(hù)性 5.便于協(xié)同開發(fā)