面試問vue源碼(vue前端面試官常問的問題)
diff發(fā)生在虛擬DOM上diff算法是在新虛擬DOM和老虛擬DOM進(jìn)行diff精細(xì)化比對(duì),實(shí)現(xiàn)最小量更新,最后反映到真正的DOM上虛擬DOM并不是VUE專屬的,很多其他框架也都有用到虛擬DOM所謂的虛擬DOM其實(shí)是一個(gè)js對(duì)象由于DO。
Vue 采用的 Diff 算法則通過逐級(jí)對(duì)比,大大降低了復(fù)雜性,時(shí)間復(fù)雜度為 OnVNode 更新首先會(huì)經(jīng)過 patch 函數(shù), patch 函數(shù)源碼如下vnode 表示更新后的節(jié)點(diǎn),oldVnode 表示更新前的節(jié)點(diǎn),通過對(duì)比新舊節(jié)點(diǎn)進(jìn)行操作。
通過 Compile 來解析編譯模板指令vue中是用來解析 ,最終利用 watcher 搭起observer和 Compile 之間的通信橋梁,達(dá)到數(shù)據(jù)變化 視圖更新視圖交互變化 input 數(shù)據(jù) model 變更雙向綁定效果。
簡(jiǎn)而言之,就是首先轉(zhuǎn)化成AST Abstract Syntax Tree,抽象語法樹,即將源代碼語法結(jié)構(gòu)抽象成樹狀表現(xiàn)形式,然后通過 render函數(shù)進(jìn)行渲染,并返回VNode Vue js的虛擬DOM節(jié)點(diǎn) 詳細(xì)步驟如下 1通過 compile編譯器把 template編譯成。
1什么是vue的生命周期? Vue實(shí)例從創(chuàng)建到銷毀的過程,就是生命周期也就是從開始創(chuàng)建初始化數(shù)據(jù)編譯模板掛載DOM渲染更新渲染卸載等一系列過程,我們稱這是Vue的生命周期 2vue生命周期的作用是什么? 它的生命周期中。
Vue數(shù)據(jù)雙向綁定的特性,指代的是Vue實(shí)例中的數(shù)據(jù)和網(wǎng)頁視圖中的數(shù)據(jù)綁定,實(shí)例中數(shù)據(jù)的更新會(huì)直接影響視圖的渲染展示,視圖中的數(shù)據(jù)更新會(huì)自動(dòng)同步到實(shí)例中的數(shù)據(jù),這樣的操作機(jī)制就是數(shù)據(jù)雙向綁定機(jī)制Vue底層主要是通過Object。
vue框架中狀態(tài)管理在mainjs引入store,注入新建了一個(gè)目錄store, export 場(chǎng)景有單頁應(yīng)用中,組件之間的狀態(tài)音樂播放登錄狀態(tài)加入購(gòu)物車。
1都支持服務(wù)器端渲染 2都有虛擬dom,組件化開發(fā),都有‘props’的概念,允許父組件往子組件傳送數(shù)據(jù),都實(shí)現(xiàn)webComponent規(guī)范 3數(shù)據(jù)驅(qū)動(dòng)視圖 4都有支持native的方案,React的React native,Vue的weex 5構(gòu)建。
文章中給你列舉了部分的面試題,這些都是公司面試常遇到的,還有需要的還可以自己去查閱一下資料1activeclass是哪個(gè)組件的屬性?嵌套路由怎么定義?答vuerouter模塊的routerlink組件2怎么定義vuerouter的動(dòng)態(tài)路由?怎么獲取傳過來的。
原理在創(chuàng)建Vue實(shí)例時(shí),Vue會(huì)遍歷data選項(xiàng)的屬性,利用ObjectdefineProperty為屬性添加getter和setter對(duì)數(shù)據(jù)的讀取進(jìn)行劫持getter用來依賴手機(jī),setter用來派發(fā)更新,并且在內(nèi)部追蹤依賴,在屬性被訪問和修改時(shí)通知變化每個(gè)組件實(shí)例會(huì)有相應(yīng)的。
命周期,也就是從開始創(chuàng)建初始化數(shù)據(jù)編譯模版掛載Dom 渲染更新。
在vue中,可以使用onEvent來寫事件,那么這個(gè)功能是怎么實(shí)現(xiàn)的呢,咋們一起來看看 在本功能的測(cè)試用例中,可以分析以下內(nèi)容解決問題這個(gè)功能比較簡(jiǎn)單,在處理prop中做個(gè)判斷, 屬性是否滿足 ^onAZi這個(gè)格式,如果。
Vuex原理面試是專門為Vue服務(wù),用于管理頁面的數(shù)據(jù)狀態(tài)提供統(tǒng)一數(shù)據(jù)操作的生態(tài)系統(tǒng),相當(dāng)于數(shù)據(jù)庫(kù)mongoDB,MySQL等,任何組件都可以存取倉(cāng)庫(kù)中的數(shù)據(jù)其中vuex類似的 還是有Redux,Redux大多用于React,針對(duì)Redux后續(xù)在做補(bǔ)充其。
1vue2相較vue3代碼可讀性比較差vue2中選項(xiàng)API格式的代碼的可讀性較差,當(dāng)需要實(shí)現(xiàn)的某一個(gè)功能涉及到多個(gè)屬性的時(shí)候,就會(huì)出現(xiàn)在 props中接收參數(shù) 在data中定義變量 在watch中監(jiān)聽變化 在computed中定義需要使用到的計(jì)算。
vue 源碼版本是2612 很多介紹vue源碼的文章對(duì)computed怎么計(jì)算值講的很清楚,但是對(duì)computed 怎么搜集到依賴它的視圖渲染watcher,以及怎么去通知對(duì)應(yīng)的渲染watcher去更新講解的很模糊或者干脆一筆帶過這篇文章主要講解。
vue面試題記不住可以制定題目框架記憶vue面試題記不住,可以制定題目框架,當(dāng)確定面試題題目類型后,開始背誦框架,記憶固定答案的封閉式問題,幫助記憶vue面試題包含Vue的生命周期對(duì)于MVVM的理解等問題。
很多同學(xué)在面試的時(shí)候都會(huì)被問到vue的虛擬DOM的diff 以及 patch 的過程,如果這vue的源碼了解不是很深刻,很難通過面試官的法眼,下面就來用通俗易懂的方式聊一聊Vue的patch過程我們都知道Dom操作是一個(gè)特別低性能的事兒。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。