千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)

一.Vue和React中diff算法的區(qū)別:
vue和react的diff算法,都是忽略跨級比較,只做同級比較,vue diff時調(diào)用patch函數(shù),參數(shù)是vnode和oldvnode,分別代表新舊節(jié)點
1.vue對比節(jié)點。當節(jié)點元素相同,但是classname不同,認為是不同類型的元素,刪除重建,而react認為是同類型節(jié)點,只是修改節(jié)點屬性
2.vue的列表對比,采用的是兩端到中間比對的方式,而react采用的是從左到右依次對比的方式。
二.虛擬dom為什么會提高性能?
虛擬dom其實就是一個javascript對象,通過這個javascript對象來描述真實dom,真實dom的操作,一般都會對某塊元素的整體重新渲染,采用虛擬dom的話,當數(shù)據(jù)變化的時候,只需要局部刷新變化的位置就好了,虛擬dom相當于再js和真實dom中間加了一個緩存,利用dom diff算法避免了沒有必要的dom操作,從而提高性能。
三.vuex和redux有什么區(qū)別?共同思想
區(qū)別:
1.vuex改進了redux中的action和reducer函數(shù),以mutations變化函數(shù)取代reducer,無需switch,只需在對應的mutation函數(shù)里改變state就可以
2.vuex由于vue自動重新渲染的特性,無需訂閱重新渲染函數(shù),只要生成新的state就可以
3.vuex數(shù)據(jù)流的順序是,view調(diào)用store.commit提交對應的請求到store中對應的mutation函數(shù)--store改變(vue檢測到數(shù)據(jù)變化自動渲染)
共同思想:
1.單一數(shù)據(jù)源
2.變化可以預測
3.本質(zhì)上:redux和vuex都是對MVVM思想的服務,將數(shù)據(jù)從視圖中抽離的一種方案
4.形式上:vuex借鑒了redux,將store作為全局的數(shù)據(jù)中心,進行數(shù)據(jù)管理
四.做管理系統(tǒng)項目vue和react怎么選擇?
1.評估項目成員的水平,如果成員js基礎較好,編碼能力較強則選擇react,否則選vue
2.評估系統(tǒng)的大小,如果想構建生態(tài)系統(tǒng),則選擇react,如果要求要快,簡單,’能用就行‘ 就選擇vue
3.評估系統(tǒng)運行環(huán)境,如果想要一個同時適用于web端和原生app的框架,就選擇react
五.react類組件和函數(shù)組件的區(qū)別?
1.語法上:函數(shù)組件是一個函數(shù),返回一個jsx元素,而類組件是用es6語法糖class定義,繼承component這個類
2.類組件中可以通過state進行狀態(tài)管理,而在函數(shù)組件中不能使用,setState(),在react16.8以后,函數(shù)組件可以通過hooks中的useState來模擬類組件中的狀態(tài)管理
3.類組件中有一系列的生命周期鉤子函數(shù),在函數(shù)組件也需要借助hooks來使用生命周期函數(shù)
4.類組件能夠捕獲最新的值,只是因為當實例的props屬性發(fā)生修改時,class組件能夠直接通過this捕獲到組件最新的props,而函數(shù)組件是捕獲渲染所使用的值,已經(jīng)因為javascript閉包的特性,之前的props參數(shù)保存在內(nèi)存之中,無法從外部進行修改。