面試中React與Vue的比對 / 面試/mvvm/virtual-dom/vue.js/react.js

1.virtual dom


用JS模擬DOM結(jié)構(gòu),DOM變化的對比,放在JS層做,以提高重繪性能

DOM操作昂貴,JS運(yùn)行效率高,要減少DOM操作

使用:snabbdom的使用

核心API:h函數(shù) h(‘標(biāo)簽名’,{屬性},[子元素]) 或者h(yuǎn)(‘標(biāo)簽名’,{屬性},’’)

patch(container,vnode) 或者 path(vnode,newvnode)

2.MVVM中jQuery與Vue區(qū)別


視圖與數(shù)據(jù)的分離,解耦(開放封閉原則)

以數(shù)據(jù)驅(qū)動(dòng)視圖,只關(guān)心數(shù)據(jù),DOM操作被封裝

3.對MVVM的理解


MVC:model view controller

(數(shù)據(jù)模型->視圖->控制器->數(shù)據(jù)模型)


或者 (控制器->數(shù)據(jù)模型->視圖)


MVVM:model view viewmodel(視圖與數(shù)據(jù)之間的橋:事件綁定,數(shù)據(jù)綁定)


4.Vue三要素


響應(yīng)式:修改data屬性后,Vue立刻監(jiān)聽到

響應(yīng)式核心:用Object.defineProperty,將data的屬性代理到vm上

模板引擎:

本質(zhì):字符串;有邏輯,v-if,v-for等,可以嵌入JS變量,必須用JS才能實(shí)現(xiàn),轉(zhuǎn)換成html渲染頁面,模板最終轉(zhuǎn)化成JS函數(shù)(render函數(shù):with方法)

渲染

5.Vue的流程


解析模板成render函數(shù):

with的使用,模板中所有信息都被render函數(shù)包含

模板中用到的data中的屬性,都變成JS變量,模板中的v-model v-for v-on都變成JS邏輯,render函數(shù)返回vnode

響應(yīng)式開始監(jiān)聽:

Object.defineProperty將data的屬性代理到VM上,使用get監(jiān)聽是為了防止重復(fù)渲染

首次渲染,顯示頁面,且綁定依賴

data屬性變化,觸發(fā)render

6.react


組件化:組件封裝,組件復(fù)用

組件封裝:封裝視圖、數(shù)據(jù)、變化邏輯(數(shù)據(jù)驅(qū)動(dòng)視圖變化)

組件復(fù)用:props傳遞,復(fù)用

JSX本質(zhì):JSX是語法糖,需要被解析成JS才能運(yùn)行,JSX是獨(dú)立的標(biāo)準(zhǔn),可被其他項(xiàng)目使用

JSX就是模板,最終要渲染成html

需要vdom的原因:JSX要渲染成html,數(shù)據(jù)驅(qū)動(dòng)視圖

7.setState過程


setState的異步:

(原因):可能一次執(zhí)行多次setState,無法規(guī)定、限制用戶如何使用setState,沒必要每次setState都重新渲染,考慮性能,即便每次重新渲染,用戶看不到中間渲染的效果,所以只要最后的效果就可

8.Vue與react


兩者本質(zhì)的區(qū)別:模板和組件化的區(qū)別

Vue本質(zhì)是MVVM框架,由MVC發(fā)展而來;

React是前端組件化框架,由后端組件化發(fā)展而來;

Vue使用模板

React使用JSX

React本身就是組件化

Vue是在MVVM上擴(kuò)展的

共同點(diǎn):

都支持組件化,都是數(shù)據(jù)驅(qū)動(dòng)視圖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容