1:說明一下使用vue對項目開發(fā)的好處
vue框架采用了漸進式開發(fā)的原理,就是你項目需要什么澳淑,就導入什么比原,可以用在大項目上,在個人項目上也有很好的體驗杠巡。組件化開發(fā)量窘,使界面復用性得到提高,spa技術氢拥,只有一個html界面蚌铜,變化效果通過路由組件的切換產(chǎn)生锨侯,不會導致界面的刷新。雙向綁定技術厘线,使我們可以將代碼集中在邏輯上识腿,而不是dom節(jié)點的操作上,提高了性能
2:講解一下mvvm模式的基本了解
mvvm是一種設計模式造壮,講究的是由數(shù)據(jù)和界面變化的雙向綁定渡讼,其中m代表model數(shù)據(jù) v代表視圖 vm viewmodel代表數(shù)據(jù)和視圖之間的中間邏輯操作
3:數(shù)據(jù)雙向綁定的基本原理
首先,我們通過observe中的defineProperty方法為每一個data添加set和get方法耳璧,每一個data創(chuàng)建一個dep發(fā)布者成箫,里面存放所有的訂閱者watcher(存放著使用該data的節(jié)點信息,每一個使用到data的元素節(jié)點都是一個watcher)旨枯。當界面的set屬性被調(diào)用的時候蹬昌,我們通過dep輪訓的去調(diào)用其中所有的訂閱者watcher,從而達到雙向綁定的過程
4:虛擬dom是什么,為什么要引入虛擬dom
虛擬dom就是在真實dom之前通過js代碼模擬出來的一個虛擬dom樹結構攀隔,每當set調(diào)用時皂贩,我們不在直接去操作真實的dom結構,而是通過新虛擬dom和舊虛擬dom樹之間進行比較后昆汹,得到最優(yōu)化的方法明刷,最后在得到真實dom去渲染界面
5:diff算法的基本過程,為什么需要在節(jié)點上添加key的操作
diff算法首先會判斷節(jié)點的key和節(jié)點類型是否相同,如果不同满粗,則直接
6:講解一下computed和watch的區(qū)別
computed是計算屬性辈末,一定要return,并且沒有參數(shù)傳遞映皆,watch有參數(shù)傳遞挤聘,并且不用return 渲染順序
7:vue有哪幾個生命周期,不同的生命周期最適合分別適合做哪些操作
創(chuàng)建前后,掛載前后捅彻,銷毀前后组去。創(chuàng)建data 掛載dom操作
8:初次渲染界面觸發(fā)的生命周期有哪些,如果引入update會產(chǎn)生什么變化
創(chuàng)建前后,掛載前后步淹,引入update會添加updated和unupdated添怔。退出界面并不會進行destory操作
9:$nextTick的作用
微任務,在所有同步動作做完之后進行的操作
10:如何獲取路由傳過來的值
this.$route.params,路由有query和params
11:路由有哪幾種導航鉤子
全局導航鉤子贤旷,組件導航鉤子
12;路由導航的兩種模式,他們倆的區(qū)別
hash和history,底層不同砾脑,#問題幼驶,存在請求不同
13:vuex有哪幾種屬性,分別是用來干什么的
mount getter modules action
14:.native的作用
.native 可以在父組件使用子組件的情況下,自定義的創(chuàng)造出一個事件韧衣,不被子組件當成自定義事件
15:事件冒泡的過程,在vue中如何防止事件冒泡
在父節(jié)點和子節(jié)點擁有同一個動作事件時盅藻,當子組件觸發(fā)一個事件购桑,該事件會像跑跑一樣向上傳遞,使得父節(jié)點也會觸發(fā)該事件的回調(diào)函數(shù)氏淑,我們在vue中可以通過.stop的方式進行防止事件冒泡
16:路由組件和普通組件的區(qū)別和使用場景
路由組件是指能夠通過路由跳轉(zhuǎn)的組件勃蜘,一般路由組件里面包裹著普通組件,普通組件的使用通過定義components的方式進行獲取
17:父子組件之間的通信問題
父傳子通過props進行參數(shù)的傳遞假残,子傳父通過emit和自定義動作的方式進行數(shù)據(jù)的傳遞
18:為什么v-for里面一般不嵌套v-if v-for和v-if的優(yōu)先級
在vue2中缭贡,v-for的優(yōu)先級大于v-if,所以會將組件全部渲染出來辉懒,然后再交給if進行判斷是否要刪除阳惹,這樣子大大浪費了性能
19:vue組件的渲染步驟,compiler和render渲染的區(qū)別
在compiler渲染的過程中眶俩,會先將template轉(zhuǎn)換成抽象語法樹莹汤,在被編譯成render函數(shù),由這個函數(shù)構建出一個虛擬dom颠印,由新老虛擬dom通過diff算法進行對比纲岭,找出最優(yōu)化的變化方式去渲染整個界面。而render函數(shù)shenglue了前兩個步驟线罕,直接從render函數(shù)開始進行界面的渲染止潮。之所以能跳過是因為render渲染添加了vue-template-complier插件。每當data的屬性觸發(fā)了set操作闻坚,則會進行render的重新渲染
20:ssr的概念
ssr就是服務器渲染沽翔,界面的形成由服務器那邊進行操作,由前端進行渲染窿凤,是與vue渲染界面一種完全不同的方式
21:前端渲染的優(yōu)化
盡量減少http請求的發(fā)出采用精靈圖和節(jié)流防抖仅偎。組件的懶加載使用=》,還有better-sroller中上滑刷新雳殊,下滑加載的概念橘沥,不將數(shù)據(jù)一次全部渲染出來,js文件放在最后面夯秃,先加載靜態(tài)界面座咆。vue keep-active的使用,防止組件的多次重復創(chuàng)建仓洼,保證key的唯一性介陶,盡量減少data中的數(shù)據(jù)
22:v-if和v-show的區(qū)別
v-show是調(diào)用了display:none來進行元素的顯示或者隱藏,而v-if是操作dom節(jié)點的消失或者產(chǎn)生來進行變化
23:ref是什么色建,有什么作用
標記dom節(jié)點