1.說說對vue的理解
(1) vue.js是一種用于創(chuàng)建用戶界面的漸進式的javascript框架
(2)也是用于創(chuàng)建單頁面應用的web應用框架。
(3)vue的核心庫只關心視圖層,使得數(shù)據(jù)和視圖的雙向綁定變得快捷
(4)由于vue的核心庫只關心視圖層,所以不僅可以與其他庫和現(xiàn)有項目整合,也可以添加更多的vue插件,實現(xiàn)更復雜的功能
2.vue的特點是:
(1)聲明式渲染:vue允許我們使用模板語法來聲明式地將數(shù)據(jù)綁定到DOM,而不是直接操作DOM
(2)組件化:vue鼓勵適用組件化的方式構建應用,使得代碼易于復用和拓展
(3)雙向數(shù)據(jù)綁定:vue使用v-model實現(xiàn)雙向數(shù)據(jù)綁定,當數(shù)據(jù)變化時,視圖也會更新,相反,當視圖更新時,數(shù)據(jù)也會同步變化
(4)虛擬dom:vue使用虛擬dom技術,可以避免不必要的dom操作,提高性能
(5)易于集成:Vue易于與其他框架和庫整合,可以在現(xiàn)有項目中逐步引入,同時它提供了豐富的插件和生態(tài)系統(tǒng),讓開發(fā)者可以根據(jù)需要使用
(6)易于學習:Vue的學習曲線較為平緩,文檔清晰易懂,對于初學者和有經(jīng)驗的開發(fā)者來說都非常友好
3.v-if和v-show的區(qū)別
(1)v-if和v-show的共同點:都能控制元素是否在頁面上顯示
(2)v-if和v-show的不同點:
控制手段不同:v-show隱藏是為該元素添加css--display:none,dom元素依然存在;
v-if顯示隱藏是將dom整個添加或刪除;
編譯過程不同:v-show只是簡單的基于css切換;
v-if切換有一個局部編譯/卸載的過程,切換過程中合適地銷毀和重建內部的事件監(jiān)聽和子組件
編譯條件不同:v-show由false變?yōu)閠rue的時候并不會觸發(fā)組件的生命周期;
v-if是真正的條件渲染,它會確保切換過程中條件塊內的事件監(jiān)聽器和子組件適當?shù)乇讳N毀和重建,只有渲染條件為假時,并不做操作,直到為真時才渲染
(3)v-show和v-if的使用場景:
需要頻繁切換,使用v-show更好;
在運行時條件很少改變,使用v-if更好;
4.vue的生命周期
vue的生命周期指的是vue實例從創(chuàng)建到銷毀的全過程,vue所有的功能都是圍繞其生命周期進行的,在生命周期的不同階段調用不同的鉤子函數(shù),可以實現(xiàn)組件數(shù)據(jù)管理和dom渲染兩大重要功能。
vue的生命周期總共可以分為8個階段:創(chuàng)建前后,載入前后,更新前后,銷毀前后,以及一些特殊場景的生命周期
vue的八個生命周期鉤子函數(shù):
(1)beforeCreate:組件實例被創(chuàng)建之初,實例剛在創(chuàng)建過程中,(data)屬性(methods)方法都未初始化,不能獲取或操作dom
(2)created:實例已經(jīng)創(chuàng)建完成,屬性已經(jīng)綁定到實例上,但DOM還未生成,$el屬性還不存在,可調用methods中的方法,訪問和修改data數(shù)據(jù)觸發(fā)響應式dom渲染,可以通過computed和watch完成數(shù)據(jù)計算
(3)beforeMounte:組件掛載之前,未執(zhí)行渲染、更新,dom未創(chuàng)建,在掛載(即將插入到DOM中)開始之前被調用
(4)mounted:初始化結束,dom已創(chuàng)建,可用于獲取訪問數(shù)據(jù)和dom元素,實例被掛載后調用,這時候el被新創(chuàng)建的vm.$el替換,并掛載到實體的DOM上,但不一定包含所有的子組件
(5)beforeUpdate:組件數(shù)據(jù)發(fā)生變化,更新前,可用于獲取更新前各種狀態(tài)
(6)updated:數(shù)據(jù)數(shù)據(jù)更新之后,更新后,所有狀態(tài)已是最新
(7)beforedestroy:組件實例銷毀之前,銷毀前,可用于一些定時器或訂閱的取消
(8)destroyed:組件實例銷毀之后,組件已銷毀,作用同上
三個特殊場景的生命周期鉤子:
(1)activated
keep-alive 緩存的組件激活時
(2)deactivated
keep-alive 緩存的組件停用時調用
(3)errorCaptured
捕獲一個來自子孫組件的錯誤時被調用
數(shù)據(jù)請求在created和mouted的區(qū)別:
區(qū)別:
(1)created是在組件實例一旦創(chuàng)建完成的時候立刻調用,這時候頁面dom節(jié)點并未生成
(2)mounted是在頁面dom節(jié)點渲染完畢之后就立刻執(zhí)行的
(3)觸發(fā)時機上created是比mounted要更早的
共同點:
(1)都能拿到實例對象的屬性和方法,討論這個問題本質就是觸發(fā)的時機,放在mounted請求有可能導致頁面閃動(頁面dom結構已經(jīng)生成),但如果在頁面加載前完成則不會出現(xiàn)此情況,建議:放在create生命周期當中
浙公網(wǎng)安備 33010602011771號