angular7雙向數(shù)據(jù)綁定原理 前端那么多技術(shù),真的有必要嗎?
前端那么多技術(shù),真的有必要嗎?哈哈。JQuery不是技術(shù),而是藝術(shù)。JQuery只是提供了一個(gè)想法和一個(gè)框架。你可以看看如何自己做一個(gè)輪子;選擇器很麻煩,你可以重寫(xiě)它。JQuery非常好。一些所謂的前
前端那么多技術(shù),真的有必要嗎?
哈哈。
JQuery不是技術(shù),而是藝術(shù)。
JQuery只是提供了一個(gè)想法和一個(gè)框架。你可以看看如何自己做一個(gè)輪子;
選擇器很麻煩,你可以重寫(xiě)它。JQuery非常好。一些所謂的前端程序員,使用了一些jQuery的api和函數(shù),覺(jué)得它是落后的、垃圾的,這確實(shí)降低了前端的門檻;
jQuery只關(guān)注DOM操作,很多函數(shù)沒(méi)有包含在內(nèi),jQuery很難做細(xì)粒度的定制,但是重構(gòu),重構(gòu),重構(gòu),不要你知道的。
近年來(lái),前端市場(chǎng)被打破。各種自學(xué)、轉(zhuǎn)行、培訓(xùn)學(xué)校,能用各種框架、插件都覺(jué)得自己是前端工程師,連最基本的范圍、閉包、二叉樹(shù)算法等都處于無(wú)知狀態(tài)。
Vue是如何實(shí)現(xiàn)雙向數(shù)據(jù)綁定的?
數(shù)據(jù)和視圖的綁定和同步最終體現(xiàn)在數(shù)據(jù)的讀寫(xiě)過(guò)程中,也就是說(shuō)Object.defineProperty屬性()在數(shù)據(jù)集和get函數(shù)中定義。Vue中定義的函數(shù)是definereactive。在簡(jiǎn)化版的實(shí)現(xiàn)中,我只保留了一些基本特性:function definereactive(obj,key,值){
var dep=new dep()Object.defineProperty屬性(obj,key,{
enumerable:true,
configurable:true,
get:function reactiveGetter(){
if(部門目標(biāo)) {
部門依賴()
}
返回值
},
set:函數(shù)reactiveSetter(newVal){
if(value===newVal){
return
}else{
value=newVal部門通知讀取數(shù)據(jù)時(shí),如果有觀察者(觀察者將負(fù)責(zé)將新數(shù)據(jù)發(fā)送到視圖),則將觀察者綁定到當(dāng)前數(shù)據(jù)(部門依賴(),dep將當(dāng)前數(shù)據(jù)和所有觀察者之間的依賴關(guān)系關(guān)聯(lián)起來(lái)是一個(gè)檢查和記錄依賴關(guān)系的過(guò)程。為數(shù)據(jù)賦值時(shí),如果數(shù)據(jù)發(fā)生變化,將通知所有觀察者部門通知())。這樣,即使我們手動(dòng)更改數(shù)據(jù),框架也可以自動(dòng)將數(shù)據(jù)與視圖同步。