溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

vue前臺(tái)面試題有哪些

發(fā)布時(shí)間:2022-05-06 14:13:56 來(lái)源:億速云 閱讀:119 作者:zzz 欄目:大數(shù)據(jù)

這篇文章主要介紹“vue前臺(tái)面試題有哪些”,在日常操作中,相信很多人在vue前臺(tái)面試題有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”vue前臺(tái)面試題有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1.vue性能優(yōu)化的幾種方案

1.正確的選擇v-if和v-show的使用,v-if有更高的切換消耗,v-show有更高的初始消耗

2.路由懶加載:當(dāng)頁(yè)面很多,組件很多的時(shí)候,SPA頁(yè)面在初次加載的時(shí)候,就會(huì)變的很慢。這是由于vue初次加載的時(shí)候把可能一開(kāi)始看不見(jiàn)的組件也一次加載了,這個(gè)時(shí)候就需要對(duì)頁(yè)面進(jìn)行優(yōu)化,就需要異步組件了。

3.緩存:spa頁(yè)面采用keep-alive緩存組件

4.圖片懶加載:提高頁(yè)面加載速度,不在可視區(qū)域內(nèi)的圖片先不加載,只有滾動(dòng)到可視區(qū)域的時(shí)候才加載。一般借助外部插件如 vue-lazyload。使用只要要npm install vue-lazyload而后頁(yè)面引入即用。

5.SEO優(yōu)化: ssr服務(wù)端渲染

6.打包優(yōu)化:對(duì)于少量過(guò)大的包采取cdn引入文件的方式而不是直接下載到本地。

2.v-show和v-if誰(shuí)的性能更高

v-show本質(zhì)就是通過(guò)控制css中的display設(shè)置為none,控制隱藏,只會(huì)編譯?次;v-if是動(dòng)態(tài)的向DOM樹(shù)內(nèi)增加或者者刪除DOM元素,若初始值為false,就不會(huì)編譯了。?且v-if不停的銷毀和創(chuàng)立?較消耗性能。所以假如要頻繁切換那么v-show性能更高,假如不是頻繁切換,v-if性能更高

3.vue之間的數(shù)據(jù)傳遞

父到子:props

子到父:$emit自己設(shè)置事件

復(fù)雜組件的傳遞:通過(guò)vuex

4.單文件組件中如何讓樣式只在當(dāng)前組件生效

在組件中的style前面加上scoped

5.vue中的生命周期(鉤子函數(shù))

共有8+2個(gè)鉤子函數(shù) 基本的有8個(gè),keep-alive中有2個(gè)

beforeCreate(創(chuàng)立前) / created(創(chuàng)立后) / beforeMount(掛載前) / mounted(掛載后) beforeUpdate(升級(jí)前)/ updated(升級(jí)后) /beforeDestroy(銷毀前)/ destroyed(銷毀后)

其中第一次加載頁(yè)面會(huì)觸發(fā) beforeCreate, created, beforeMount, mounted 這幾個(gè)鉤子

另外在keep-alive中,vue新添加了兩個(gè)鉤子函數(shù)

activated:由于使用了keep-alive的組件會(huì)被緩存,所以created,mounted這種的鉤子函數(shù)只會(huì)執(zhí)行一次, 假如我們的子組件需要在每次加載的時(shí)候進(jìn)行某些操作,可以使用activated鉤子觸發(fā)。

deactivated:組件被移除時(shí)使用。

6.vue父子組件生命周期的執(zhí)行順序

加載渲染過(guò)程

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

子組件升級(jí)過(guò)程

父beforeUpdate->子beforeUpdate->子updated->父updated

父組件升級(jí)過(guò)程

父beforeUpdate->父updated

銷毀過(guò)程

父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

7.在vue中如何獲取DOM元素

給元素增加ref屬性 通過(guò)this.$refs.domName獲取

8.key的作用

需要使用key來(lái)給每個(gè)節(jié)點(diǎn)做一個(gè)唯一標(biāo)識(shí),Diff算法即可以正確的識(shí)別此節(jié)點(diǎn)。

作用主要是為了高效的升級(jí)虛擬DOM。

9.$nextTick的使用場(chǎng)景(作用)

由于vue中數(shù)據(jù)升級(jí)是異步的,當(dāng)你修改了data的值而后馬上獲取這個(gè)dom元素的值,是不能獲取到升級(jí)后的值,

你需要使用$nextTick這個(gè)回調(diào),讓修改后的data值渲染升級(jí)到dom元素之后在獲取,才能成功。

10.v-if和v-for的優(yōu)先級(jí)

v-if 與 v-for 一起使用時(shí),v-for 具備比 v-if 更高的優(yōu)先級(jí),這意味著 v-if 將分別重復(fù)運(yùn)行于每個(gè) v-for 循環(huán)中。所以,不推薦v-if和v-for同時(shí)使用。假如非要一起用,可以把v-if放到外層元素,或者者不用v-if,先在計(jì)算屬性中挑選出數(shù)據(jù),而后在v-for

11.v-model的原理

vue 雙向數(shù)據(jù)綁定是通過(guò) 數(shù)據(jù)劫持 結(jié)合 發(fā)布訂閱模式的方式來(lái)實(shí)現(xiàn)的, 也就是說(shuō)數(shù)據(jù)和視圖同步,數(shù)據(jù)發(fā)生變化,視圖跟著變化,視圖變化,數(shù)據(jù)也隨之發(fā)生改變;

核心:關(guān)于VUE雙向數(shù)據(jù)綁定,其核心是 Object.defineProperty()方法。

12.什么是mvvm

MVVM 將數(shù)據(jù)雙向綁定(data-binding)作為核心思想,View 和 Model 之間沒(méi)有聯(lián)絡(luò),它們通過(guò) ViewModel 這個(gè)橋梁進(jìn)行交互。

Model 和 ViewModel 之間的交互是雙向的,因而 View 的變化會(huì)自動(dòng)同步到 Model,而 Model 變化也會(huì)立即反映到 View 上顯示。

當(dāng)客戶操作 View,ViewModel 感知到變化,而后通知 Model 發(fā)生相應(yīng)改變;反之當(dāng) Model 發(fā)生改變,ViewModel 也能感知到變化,使 View 作出相應(yīng)升級(jí)。

13.如何優(yōu)化SPA應(yīng)用的首屏加載速度慢的問(wèn)題

將公用的JS庫(kù)通過(guò)script標(biāo)簽外部引入,減小app.bundel的大小,讓瀏覽器并行下載資源文件,提高下載速度;

在配置 路由時(shí),頁(yè)面和組件使用懶加載的方式引入,進(jìn)一步縮小 app.bundel 的體積,在調(diào)用某個(gè)組件時(shí)再加載對(duì)應(yīng)的js文件;

加一個(gè)首屏 loading 圖,提升客戶體驗(yàn);

14.vue路由的兩種模式,hash與history的區(qū)別

hash —— 即地址欄 URL 中的 # 符號(hào)(此 hash 不是密碼學(xué)里的散列運(yùn)算)。

比方這個(gè) URL:ABC Home Page - ABC.com 的值為 #/hello。它的特點(diǎn)在于:hash 盡管出現(xiàn)在 URL 中,但不會(huì)被包括在 HTTP 請(qǐng)求中,對(duì)后臺(tái)完全沒(méi)有影響,因而改變 hash 不會(huì)重新加載頁(yè)面。

history —— 利用了 HTML5 History Interface 中新添加的 pushState() 和 replaceState() 方法。(需要特定瀏覽器支持)

這兩個(gè)方法應(yīng)用于瀏覽器的歷史記錄棧,在當(dāng)前已有的 back、forward、go 的基礎(chǔ)之上,它們提供了對(duì)歷史記錄進(jìn)行修改的 功能。只是當(dāng)它們執(zhí)行修改時(shí),盡管改變了當(dāng)前的 URL,但瀏覽器不會(huì)立即向后臺(tái)發(fā)送請(qǐng)求。

因而可以說(shuō),hash 模式和 history 模式都屬于瀏覽器自身的特性,Vue-Router 只是利用了這兩個(gè)特性(通過(guò)調(diào)用瀏覽器提供 的接口)來(lái)實(shí)現(xiàn)前臺(tái)路由。

注意!?。istory模式下,前臺(tái)的url必需和實(shí)際向后臺(tái)發(fā)起請(qǐng)求的url 一致,如http://www.abc.com/book/id 。假如后臺(tái)缺少對(duì)/book/id 的路由解決,將返回404錯(cuò)誤。刷新也會(huì)報(bào)404由于會(huì)實(shí)際去請(qǐng)求數(shù)據(jù)。 (需要后臺(tái)進(jìn)行配置。vue官網(wǎng)有詳情)

15.如何處理vuex數(shù)據(jù)刷新丟失的問(wèn)題

由于store里的數(shù)據(jù)是保存在運(yùn)行內(nèi)存中的,當(dāng)頁(yè)面刷新時(shí),頁(yè)面會(huì)重新加載vue實(shí)例,store里面的數(shù)據(jù)就會(huì)被重新賦值

如何處理:

一種是state里的數(shù)據(jù)一律是通過(guò)請(qǐng)求來(lái)觸發(fā)action或者mutation來(lái)改變(不推薦,當(dāng)vuex數(shù)據(jù)很多項(xiàng)目很大的時(shí)候不適用)

一種是將state里的數(shù)據(jù)保存一份到本地存儲(chǔ)(localStorage、sessionStorage、cookie)中 (推薦)

16.vue中如何實(shí)現(xiàn)跨域訪問(wèn)

1.開(kāi)發(fā)環(huán)境:配置vue.config.js proxy代理商

2.生產(chǎn)環(huán)境:配置nginx代理商

到此,關(guān)于“vue前臺(tái)面試題有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI