vue面試常問的問題

被愛的都是祖宗,安全感只有靠自己,太依賴一個人反而會傷的更深?。?!

1、簡述Vue的雙向綁定原理

當(dāng)vue實例化的時候,vue會遍歷data里面的屬性,通過object.definePrototype將它們轉(zhuǎn)化為getter和stter并在內(nèi)部追蹤相關(guān)依賴,在屬性被訪問或者修改的時候進行更新。

雙向綁定v-model是同時實現(xiàn)bind attribute(value)和Listen to event(input)

2、本地存儲有哪些,區(qū)別是什么

sessionStorage和localStorage是h5新增的本地存儲,用來存儲客戶端臨時信息的對象。

前者是持久性存儲,除非手動刪除,否則一直存在。

后者是生命周期為當(dāng)前窗口或標(biāo)簽頁,一旦窗口或標(biāo)簽頁被永久關(guān)閉了,那么所有通過sessionStorage存儲的數(shù)據(jù)也就被清空了。

數(shù)據(jù)存儲的時候需要將JSON對象提供的stringify將其他數(shù)據(jù)類型轉(zhuǎn)化成字符串,再存儲到storage中就可以了.

存:

??? var obj = {"name":"xiaoming","age":"16"}

??? localStorage.setItem("userInfo",JSON.stringify(obj));

?。?/p>

??? var user = JSON.parse(localStorage.getItem("userInfo"))

刪除:

??? localStorage.remove("userInfo);

清空:

??? localStorage.clear();

3、delete和Vue.delete刪除數(shù)組的區(qū)別

delete只是被刪除的元素變成了 empty/undefined 其他的元素的鍵值還是不變。

Vue.delete 直接刪除了數(shù)組對應(yīng)的項,改變了數(shù)組的鍵值。

4.Vue 組件 data 為什么必須是函數(shù)

因為 JS 本身的特性帶來的,如果 data 是一個對象,那么由于對象本身屬于引用類型,當(dāng)我們修改其中的一個屬性時,會影響到所有 Vue 實例的數(shù)據(jù)。如果將 data 作為一個函數(shù)返回一個對象,那么每一個實例的 data 屬性都是獨立的,不會相互影響了。

5、vue組件的優(yōu)缺點

優(yōu)點:輕量級框架、簡單易學(xué)、雙向數(shù)據(jù)綁定、組件化、視圖、數(shù)據(jù)和結(jié)構(gòu)的分離、虛擬DOM、運行速度快。

vue是單頁面應(yīng)用,使頁面局部刷新,不用每次跳轉(zhuǎn)頁面都要請求所有數(shù)據(jù)和dom,這樣大大加快了訪問速度和提升用戶體驗。而且他的第三方ui庫很多節(jié)省開發(fā)時間。

缺點:seo難度比較大,初次加載耗時比較長,適合中小項目開發(fā)

6、vue和小程序的區(qū)別有哪些?

1、生命周期? ? 2、數(shù)據(jù)的綁定? ? 3、顯示和隱藏? ?4、事件的處理? ?5、數(shù)據(jù)的雙向綁定

6、傳參? ? ?7、父子間的通信? ? ??

7、導(dǎo)航守衛(wèi)有哪些?

全局守衛(wèi):beforeEach? afterEach? ?beforeResolve

路由獨享守衛(wèi):beforeEnter

組件內(nèi)守衛(wèi):beforeRouteEnter? ?beforeEnterUpdata? ? ?beforeRouteLeave

8、vue的單項數(shù)據(jù)流的理解

單項數(shù)據(jù)流是指只能從一個方向來修改狀態(tài)。

主要應(yīng)用在父子組件之間的通信。

9、v-if 和 v-show 有什么區(qū)別

v-show 僅僅控制元素的顯示方式,將 display 屬性在 block 和 none 來回切換;而v-if會控制這個 DOM 節(jié)點的存在與否。當(dāng)我們需要經(jīng)常切換某個元素的顯示/隱藏時,使用v-show會更加節(jié)省性能上的開銷;當(dāng)只需要一次顯示或隱藏時,使用v-if更加合理。

10.$route?和?$router?的區(qū)別

$router為 VueRouter 實例,想要導(dǎo)航到不同URL,則使用$router.push方法。

$route為當(dāng)前 router 跳轉(zhuǎn)對象,里面可以獲取 name 、 path 、 query 、 params 等。

11、computed 和 watch 的區(qū)別和運用的場景?

computed: 是計算屬性,依賴其它屬性值,并且 computed 的值有緩存,只有它依賴的屬性值發(fā)生改變,下一次獲取 computed 的值時才會重新計算 computed 的值;?

watch: 更多的是「觀察」的作用,類似于某些數(shù)據(jù)的監(jiān)聽回調(diào) ,每當(dāng)監(jiān)聽的數(shù)據(jù)變化時都會執(zhí)行回調(diào)進行后續(xù)操作;?

運用場景: 當(dāng)我們需要進行數(shù)值計算,并且依賴于其它數(shù)據(jù)時,應(yīng)該使用 computed,因為可以利用 computed 的緩存特性,避免每次獲取值時,都要重新計算; 當(dāng)我們需要在數(shù)據(jù)變化時執(zhí)行異步或開銷較大的操作時,應(yīng)該使用 watch,使用 watch 選項允許我們執(zhí)行異步操作 ( 訪問一個 API ),限制我們執(zhí)行該操作的頻率,并在我們得到最終結(jié)果前,設(shè)置中間狀態(tài)。這些都是計算屬性無法做到的。

12、vuex的理解

Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài)。

當(dāng)項目遇到以下兩種場景時

多個組件依賴于同一狀態(tài)時。

來自不同組件的行為需要變更同一狀態(tài)。

核心屬性是state、getter、mutation、action、module






?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 33、JS中的本地存儲 把一些信息存儲在當(dāng)前瀏覽器指定域下的某一個地方(存儲到物理硬盤中)1、不能跨瀏覽器傳輸:在...
    萌妹撒閱讀 2,246評論 0 2
  • 請詳細(xì)說下你對vue生命周期的理解? beforeCreate(創(chuàng)建前) 在數(shù)據(jù)觀測和初始化事件還未開始 crea...
    阿喜liang閱讀 787評論 0 1
  • vue的特點 Vue.js是一款輕量級的以數(shù)據(jù)驅(qū)動(數(shù)據(jù)的變化將引起視圖的變化)的構(gòu)建單頁面應(yīng)用的mvvm框架,它...
    阿踏閱讀 2,062評論 1 11
  • vue-cli搭建項目 確保安裝了node與npm 再目標(biāo)文件夾下打開終端 執(zhí)行cnpm i vue-cli -g...
    Akiko_秋子閱讀 3,362評論 1 22
  • 1. Vue.js介紹 Vue.js是一套構(gòu)建用戶界面的 漸進式框架,擁有可組件化的MVVM庫。與其他重量級框架...
    未來好好生活閱讀 1,652評論 1 13

友情鏈接更多精彩內(nèi)容