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

單向數(shù)據(jù)流和雙向數(shù)據(jù)綁定
1.單向數(shù)據(jù)流:組件之間傳遞數(shù)據(jù)具有單項(xiàng)數(shù)據(jù)這樣的特性叫做單向數(shù)據(jù)流。單向數(shù)據(jù)流只能通過(guò)一個(gè)方向改變數(shù)據(jù)。
例如:父?jìng)髯?,子組件想要改變父組件傳遞過(guò)來(lái)的數(shù)據(jù)只能通過(guò)父組件傳遞過(guò)來(lái)的方法改變父組件中得數(shù)據(jù),而不是在子組件中直接改變
2.雙向數(shù)據(jù)綁定:模型到視圖:模型值通過(guò)value綁定到視圖,視圖到模型:然后視圖通過(guò)監(jiān)聽(tīng)事件然后改變模型值再更新視圖。
vue2得響應(yīng)式原理Object.defineProperty的缺點(diǎn):1.無(wú)法監(jiān)聽(tīng)es6的色圖,map變化。2.無(wú)法監(jiān)聽(tīng)類(lèi)類(lèi)型的數(shù)據(jù) 3.屬性的新增和刪除也沒(méi)法監(jiān)聽(tīng).
3.MVC:M:moudel模型,V:view視圖,C:controller控制臺(tái)。把邏輯和展示邏輯分離,模塊化程度高,但是沒(méi)法實(shí)現(xiàn)復(fù)用。
MVP:可以實(shí)現(xiàn)復(fù)用,但是需要手動(dòng)調(diào)試。不能實(shí)現(xiàn)響應(yīng)式。
MVVM:從模型到視圖,再?gòu)囊晥D到模型。
4.生命周期:原來(lái)的:三階段:1初始化階段,2.更新階段3.銷(xiāo)毀階段。新增的:1初始階段鉤子被setup取代。更新階段還是一樣的。銷(xiāo)毀階段:變?yōu)閛nbeforeunmount和onunmounted。
5.vue的響應(yīng)式原理
vue2:Object.defineProperty也就是數(shù)據(jù)劫持
vue3:proxy也就是數(shù)據(jù)代理
對(duì)比:proxy是監(jiān)聽(tīng)整個(gè)對(duì)象而不是某個(gè)屬性,所以其可以監(jiān)聽(tīng)到數(shù)組的改變.proxy返回的是一個(gè)新的對(duì)象,而Object.defineProperty是遍歷對(duì)象找到屬性修改。
但是!object.defineProops的兼容性高!甚至可以支持ie9
6.邏輯復(fù)用:Composition API 中可以根據(jù)相關(guān)組織代碼,可以提高代碼的可讀性和維護(hù)性,類(lèi)似于react的hook寫(xiě)法
7.jQuery注重視圖層,是直接操作dom去實(shí)現(xiàn)頁(yè)面的一些邏輯渲染,更加消耗性能,而vue則是通過(guò)數(shù)據(jù)的雙向數(shù)據(jù)綁定,最終表現(xiàn)在dom層(也就是虛擬DOm)使得項(xiàng)目子集責(zé)任更加清晰,也提高了開(kāi)發(fā)的效率.
8.vue的樣式私有化:加上scoped就是樣式私有化,否則就是全局樣式。
9.$root是根父組件上面的屬性和方法,$paeent是最近一級(jí)父組件,$refs則是拿到子組件實(shí)例
10.自定義指令:通過(guò)derective定義,有全局和局部自定義指令。