請(qǐng)描述一下 cookies、sessionStorage、localtorage區(qū)別。




常見(jiàn)的HTTP的狀態(tài)碼。




css的選擇器有哪些。




css優(yōu)化、提高性能的方法有哪些?




margi" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > Web前端開(kāi)發(fā)常見(jiàn)面試題總結(jié)

Web前端開(kāi)發(fā)常見(jiàn)面試題總結(jié)

時(shí)間:2023-07-02 17:03:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-07-02 17:03:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)

Web前端開(kāi)發(fā)常見(jiàn)面試題總結(jié):簡(jiǎn)述清除浮動(dòng)的幾種方式。




請(qǐng)描述一下 cookies、sessionStorage、localtorage區(qū)別。




常見(jiàn)的HTTP的狀態(tài)碼。




css的選擇器有哪些。




css優(yōu)化、提高性能的方法有哪些?




margin和padding分別適合什么場(chǎng)景使用。




什么是閉包,為什么要使用閉包?




Ajax是什么?如何創(chuàng)建一個(gè)Ajax?




同步和異步的區(qū)別。




Vue中的v-if和v-show有什么區(qū)別?




Vue的雙向數(shù)據(jù)綁定原理是什么?




Vue的指令有哪些?




Vuex是什么?有那幾種屬性?




Vue之間的組件傳值。




路由懶加載。




get和post的區(qū)別。




v-for中key的作用是什么?




什么是路由守衛(wèi)?




vue-router的路由模式有幾種?




Vue組件中data為什么是一個(gè)函數(shù)?




Vue-loader是什么?




談?wù)勀銓?duì)vue生命周期的理解。




談?wù)勀銓?duì)keep-alive的理解。




虛擬Dom的實(shí)現(xiàn)原理。




computed和watch的區(qū)別




路由的導(dǎo)航鉤子




路由跳轉(zhuǎn)的四種方式




什么是回調(diào)函數(shù)




異步請(qǐng)求在哪個(gè)周期發(fā)起




vuex和本地存儲(chǔ)的區(qū)別




vue插槽




axios和ajax的區(qū)別




vue的src目錄詳解




vue的常用修飾符




webpack創(chuàng)建打包




1.介紹一下項(xiàng)目




2.介紹一下vueX




前端存儲(chǔ)的值,當(dāng)頁(yè)面更新的時(shí)候,刷新這個(gè)值會(huì)保留嗎?




3.vue的指令都有那些?




4.v-if和v-show的區(qū)別?




5.vue組件之間的傳值通過(guò)什么方式?




6.當(dāng)gitpor的時(shí)候,文件產(chǎn)生了沖突,如何如何拉取代碼?




7.vue封裝組件的過(guò)程?




8.vue的生命周期




9.和后端交互,Ajax請(qǐng)求一般在哪個(gè)生命周期中進(jìn)行請(qǐng)求】




10.Vuex是一個(gè)用來(lái)管理組件之間通信的插件




【讓自己介紹了一下上個(gè)項(xiàng)目;




說(shuō)一下axios和ajax的區(qū)別,有關(guān)promise同時(shí)發(fā)送兩個(gè)請(qǐng)求如何實(shí)現(xiàn)、如何從一個(gè)頁(yè)面把滾動(dòng)條的位置發(fā)送到另一個(gè)頁(yè)面;




客戶端渲染和服務(wù)器渲染;

沒(méi)耐心的朋友想領(lǐng)取更多面試題及解析答案請(qǐng)戳下方鏈接,或直接關(guān)注公粽號(hào):程序員子木




3.盒子模型.




1、W3C標(biāo)準(zhǔn)盒子模型




2、IE盒子模型




1.說(shuō)一下你在項(xiàng)目中遇到的技術(shù)難點(diǎn),并且是如何解決的




2.js的基本數(shù)據(jù)類型




3.如果要你自己封裝一個(gè)級(jí)聯(lián)選擇框,你會(huì)封裝哪些屬性




4.跨域問(wèn)題




1.小程序的傳參方法有哪幾種




2.你使用過(guò)哪些方法,來(lái)提高微信小程序的應(yīng)用速度




3.請(qǐng)談?wù)勑〕绦虻纳芷?br>



4.微信小程序的跳轉(zhuǎn)方式




5.你在開(kāi)發(fā)微信小程序的時(shí)候遇到的問(wèn)題




6.如何使用vuex保存自己想要的數(shù)據(jù),刪除不需要的數(shù)據(jù)




7.除了屬性綁定和vuex,還可以使用什么方式進(jìn)行父子通信




8.cookie和localStorage的區(qū)別,以及cookie不設(shè)置時(shí)間的問(wèn)題




9.怎樣用微信小程序?qū)崿F(xiàn)H5的一些特性




10.路由的哈希模式和history模式




11.微信小程序,如何做背景圖片




12.微信小程序頁(yè)面棧的問(wèn)題




13.微信小程序關(guān)于授權(quán)的系列問(wèn)題】




1.最近項(xiàng)目介紹




2.flex布局




3.自適應(yīng)原理




4.js中數(shù)組求和了解幾種




5.watch 和 computed methods的區(qū)別




1.vue前端開(kāi)發(fā)流程




3.權(quán)限問(wèn)題(axios請(qǐng)求響應(yīng)攔截)




4.數(shù)據(jù)雙向綁定原理




5.項(xiàng)目?jī)?yōu)化】




vuex 一般在什么場(chǎng)景下使用




引進(jìn)組件的步驟




如何阻止事件冒泡




簡(jiǎn)述清除浮動(dòng)的幾種方式。

父級(jí)div定義height

結(jié)尾處加空div標(biāo)簽clear:both

父級(jí)div定義偽類:after和zoom

父級(jí)div定義overflow:hidden 超出盒子部分會(huì)被隱藏,不推薦使用

請(qǐng)描述一下 cookies、sessionStorage、localtorage區(qū)別。

cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來(lái)回傳遞。而sessionStorage和localStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)送給服務(wù)器,僅在本地保存。Cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個(gè)路徑下。

存儲(chǔ)大小限制也不同,cookie數(shù)據(jù)不能超過(guò)4k,同時(shí)因?yàn)槊看蝖ttp請(qǐng)求都會(huì)攜帶cookie,所以cookie只適合保存很小的數(shù)據(jù)。sessionStorage和localStorage雖然也有存儲(chǔ)大小的限制,但比cookie大得多,可以達(dá)到5M或更大。

數(shù)據(jù)有效期不同,sessionStorage:僅在當(dāng)前瀏覽器窗口關(guān)閉前有效,自然也就不能持久保存;localStorage:始終有效,窗口或?yàn)g覽器關(guān)閉也一直保存,因此用作持久保存數(shù)據(jù);cookie只在設(shè)置的cookie過(guò)期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉。

作用域不同,sessionStorage不在不同的瀏覽器窗口共享,即使是同一個(gè)頁(yè)面;localStorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。

常見(jiàn)的HTTP的狀態(tài)碼。

1)200-請(qǐng)求成功




2)301-資源(網(wǎng)頁(yè)等)被永久轉(zhuǎn)移到其它URL




3)400-客戶端請(qǐng)求的語(yǔ)法錯(cuò)誤,服務(wù)器無(wú)法理解




4)401-請(qǐng)求要求用戶的身份驗(yàn)證




5)404-請(qǐng)求的資源(網(wǎng)頁(yè)等)不存在




6)500-內(nèi)部服務(wù)器錯(cuò)誤




css的選擇器有哪些。

標(biāo)簽選擇器

類選擇器

Id選擇器

全局選擇器

組合選擇器

繼承選擇器

css優(yōu)化、提高性能的方法有哪些?

合并css文件

減少css嵌套,最好不要套三層以上

不要再id選擇器前面進(jìn)行嵌套

建立公共樣式類,把相同樣式提取出來(lái)作為公共類使用

巧妙運(yùn)用css的繼承機(jī)制,如果父節(jié)點(diǎn)定了,子節(jié)點(diǎn)就無(wú)需定義

拆分出公共css文件,對(duì)于比較大的項(xiàng)目我們可以將大部分頁(yè)面的公共結(jié)構(gòu)的樣式提取出來(lái)放到單獨(dú)css文件里

Gzip壓縮

margin和padding分別適合什么場(chǎng)景使用。

margin是用來(lái)隔開(kāi)元素與元素的間距;padding是用來(lái)隔開(kāi)元素與內(nèi)容的間隔

margin用來(lái)布局分開(kāi)元素,使得元素與元素之間互相不影響

padding用來(lái)布局元素與內(nèi)容之間的間隔,讓內(nèi)容與元素之間有一段空間

使用margin的場(chǎng)景:




若需要在border外側(cè)添加空白時(shí)

空白處不需要背景(色)時(shí)

使用padding的場(chǎng)景:




不要再border內(nèi)側(cè)添加空白時(shí)

空白處需要背景(色)時(shí)

什么是閉包,為什么要使用閉包?

閉包本質(zhì)上就是將函數(shù)內(nèi)部和函數(shù)外部連接起來(lái)的一座橋梁,它最大的用處有兩個(gè),一是可以讀取函數(shù)內(nèi)部的變量,另一個(gè)就是讓這些變量的值始終保持在內(nèi)存中。




閉包避免了使用全局變量,此外,閉包允許將函數(shù)與其操作的某些數(shù)據(jù)(環(huán)境)關(guān)聯(lián)起來(lái)。




Ajax是什么?如何創(chuàng)建一個(gè)Ajax?

Ajax即異步的JavaScript和xml,是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù);傳統(tǒng)的網(wǎng)頁(yè)(不適用ajax)如果需要更新內(nèi)容,必須重載整個(gè)網(wǎng)頁(yè),使用ajax則不需要加載更新整個(gè)網(wǎng)頁(yè)




創(chuàng)建ajax的基本步驟:




創(chuàng)建XML httpRequest對(duì)象,即創(chuàng)建一個(gè)異步調(diào)用對(duì)象;

創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該HTTP請(qǐng)求的方法、URL及驗(yàn)證信息

設(shè)置相應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù)

發(fā)送HTTP請(qǐng)求

獲取異步調(diào)用返回的數(shù)據(jù)

使用JavaScript和DOM實(shí)現(xiàn)局部刷新

同步和異步的區(qū)別。

同步,就是發(fā)出一個(gè)功能調(diào)用時(shí),在沒(méi)有得到結(jié)果之前,該調(diào)用就不返回或繼續(xù)執(zhí)行后續(xù)操作。這時(shí)程序時(shí)阻塞的,只有接收到返回的值或消息后才往下執(zhí)行其他的命令。

異步,與同步相對(duì),當(dāng)一個(gè)異步過(guò)程調(diào)用發(fā)出后,調(diào)用者在沒(méi)有得到結(jié)果之前,就可以繼續(xù)執(zhí)行后續(xù)操作。當(dāng)這個(gè)調(diào)用完成后,一般通過(guò)狀態(tài)、通知和回調(diào)來(lái)通知調(diào)用者。

Vue中的v-if和v-show有什么區(qū)別?

共同點(diǎn):v-if和v-show都可以動(dòng)態(tài)顯示DOM元素




v-if比v-show的優(yōu)先級(jí)更高




區(qū)別:




1.手段:




v-if是動(dòng)態(tài)的向Dom樹(shù)內(nèi)添加或者刪除DOM元素




v-show是通過(guò)設(shè)置DOM元素的display樣式屬性控制顯示和隱藏




2.編譯過(guò)程:




v-if切換有一個(gè)局部編譯/卸載的過(guò)程,切換過(guò)程中合適的銷毀和重建內(nèi)部的事件監(jiān)聽(tīng)子組件




v-show只是簡(jiǎn)單的基于css切換




3.編譯條件:




v-if是惰性的,如果初始條件為假,則什么也不做;只有在條件第一次變?yōu)檎鏁r(shí)才開(kāi)始局部編譯




v-show是在任何條件下都被編譯,然后被緩存,而且DOM元素保留




4.性能消耗:




v-if有更高的切換消耗




v-show有更高的初始渲染消耗




5.使用場(chǎng)景:




v-if適合運(yùn)營(yíng)條件不大可能改變




v-show適合頻繁切換




Vue的雙向數(shù)據(jù)綁定原理是什么?

Vue.js是采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者,通過(guò)Object.defineProperty()來(lái)劫持各個(gè)屬性的setter,getter,在數(shù)據(jù)變動(dòng)時(shí)發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽(tīng)回調(diào)。




首先我們需要對(duì)數(shù)據(jù)進(jìn)行劫持監(jiān)聽(tīng),所以我們需要先設(shè)置實(shí)現(xiàn)一個(gè)監(jiān)聽(tīng)器Observer,用來(lái)劫持并監(jiān)聽(tīng)所有的屬性,一旦屬性發(fā)生變化,就通知訂閱者

然后我們需要設(shè)置一個(gè)訂閱者Watcher,用來(lái)接收屬性變化的一個(gè)通知并執(zhí)行相應(yīng)的函數(shù),從而更新視圖

最后設(shè)置實(shí)現(xiàn)一個(gè)解析器Compile,用來(lái)可以掃描和解析每個(gè)節(jié)點(diǎn)的相關(guān)指令,然后初始化相應(yīng)的模板數(shù)據(jù)以及訂閱者。

Vue的指令有哪些?

v-model、v-bind、v-on、v-if、v-for、v-show、v-text




Vuex是什么?有那幾種屬性?

Vuex是一個(gè)專為vue.js應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式




state:vuex的基本數(shù)據(jù),用來(lái)存儲(chǔ)變量

getter:從基本數(shù)據(jù)(state)派生的數(shù)據(jù),相當(dāng)于store的計(jì)算屬性;getter的返回值會(huì)根據(jù)它的依賴被緩存起來(lái),且只有當(dāng)它的以來(lái)至發(fā)生了改變才會(huì)被重新計(jì)算

mutation:提交更新數(shù)據(jù)的方法,必須是同步的(如果需要異步使用action)。每個(gè)mutation都有一個(gè)字符串的事件類型(type)和一個(gè)回調(diào)函數(shù)(handler)

action:和mutation的功能大致相同,不同之處在于1、action提交的是mutation,而不是直接變更狀態(tài);2、action可以包含任意異步操作

modules:模塊化vuex,可以讓每一個(gè)模塊擁有自己的state、mutation、action、getters,使得結(jié)構(gòu)非常清晰,管理更為方便

Vue之間的組件傳值。

父?jìng)髯樱焊競(jìng)髯拥膶?shí)現(xiàn)方式就是通過(guò)props屬性,子組件通過(guò)props屬性接受父組件傳過(guò)來(lái)的值,而父組件傳值的時(shí)候使用v-bind將子組件中預(yù)留的變量名綁定為data里面的數(shù)據(jù)即可

子傳父:子傳父的實(shí)現(xiàn)方式就是用了this.$emit來(lái)遍歷getData時(shí)間,首先用按鈕來(lái)觸發(fā)setData事件,在setData中用this.$emit來(lái)遍歷getData事件,最后返回this.msg

非父子:vue中沒(méi)有直接子對(duì)子傳參的方法,如果一定需要子對(duì)子傳參,可以先傳到父組件,再傳到子組件(相當(dāng)于一個(gè)公共的bus文件)

路由懶加載。

懶加載即組件并非一次性全部加載,而是需要時(shí)再加載,也叫“按需加載”




當(dāng)一個(gè)vue項(xiàng)目很大的時(shí)候,對(duì)于一些“暫時(shí)”用不到的組件,我們可以不進(jìn)行加載,等到用到此組件時(shí)再加載。這樣可以優(yōu)化spa應(yīng)用首次加載白屏情況




常見(jiàn)的懶加載方式有兩種:即ES中的import和vue異步組件

沒(méi)耐心的朋友想領(lǐng)取更多面試題及解析答案請(qǐng)戳下方鏈接,或直接關(guān)注公粽號(hào):程序員子木




未使用懶加載

使用ES中的import進(jìn)行懶加載(最常用的)

使用vue中的異步組件進(jìn)行懶加載

get和post的區(qū)別。

url可見(jiàn)性:




get參數(shù)url可見(jiàn);posturl參數(shù)不可見(jiàn)




數(shù)據(jù)傳輸上:




get通過(guò)拼接url進(jìn)行傳遞參數(shù);post通過(guò)body體傳遞參數(shù)




緩存性:




get請(qǐng)求可以緩存;post請(qǐng)求不可以緩存




后退頁(yè)面的反應(yīng):




get請(qǐng)求頁(yè)面后退時(shí)不產(chǎn)生影響;post請(qǐng)求頁(yè)面后退時(shí),會(huì)重新提交請(qǐng)求




傳輸數(shù)據(jù)的大?。?br>



Get一般傳輸數(shù)據(jù)大小不超過(guò)2k-4k;post請(qǐng)求傳輸數(shù)據(jù)的大小根據(jù)php.ini配置文件設(shè)定,也可以無(wú)限大




v-for中key的作用是什么?

Key屬性可以用來(lái)提升v-for渲染的效率。使用v-for的時(shí)候,vue需要給每個(gè)元素添加一個(gè)key屬性,這個(gè)key屬性是唯一的,可以避免數(shù)據(jù)混亂的情況出現(xiàn),vue列表進(jìn)行渲染的時(shí)候,就不會(huì)去改變?cè)械脑睾蛿?shù)據(jù),而是創(chuàng)建新的元素然后把新的數(shù)據(jù)渲染進(jìn)去




什么是路由守衛(wèi)?

一般用在登錄頁(yè)面后是否允許訪問(wèn)某個(gè)頁(yè)面,沒(méi)有登錄就不允許訪問(wèn)。如果用戶沒(méi)有登錄,但是直接通過(guò)url訪問(wèn)特定頁(yè)面,就需要重新導(dǎo)航登錄頁(yè)面,多數(shù)用于判斷token是否在這個(gè)需要重新導(dǎo)航的頁(yè)面,這就路由守衛(wèi):router.beforEach()




vue-router的路由模式有幾種?

vue-router有三種路由模式:hash,history,abstract




hash:使用url hash值來(lái)做路由。支持所有瀏覽器




實(shí)現(xiàn)原理:早期的前端路由的實(shí)現(xiàn)就是基于location.hash來(lái)實(shí)現(xiàn)的,location.hash得知救贖url中的#后面的內(nèi)容




history:依賴HTML5 history PAI和服務(wù)器配置




實(shí)現(xiàn)原理:HTML5提供了history API來(lái)實(shí)現(xiàn)url的變化




abstract:支持所有JavaScript運(yùn)行環(huán)境,如Node.js服務(wù)器端,如果發(fā)現(xiàn)沒(méi)有瀏覽器的API,路由會(huì)自動(dòng)強(qiáng)制進(jìn)入這個(gè)模式




Vue組件中data為什么是一個(gè)函數(shù)?

Object是引用數(shù)據(jù)類型,如果不用function返回,每個(gè)組件的data都是內(nèi)存的同一個(gè)地址,一個(gè)數(shù)據(jù)改變了其他也改變了;




JavaScript只有函數(shù)構(gòu)成作用域(注意理解作用域,只有函數(shù)的{}構(gòu)成作用域,對(duì)象的{}以及if(){}都不構(gòu)成作用域),data是一個(gè)函數(shù)時(shí),每個(gè)組件實(shí)力都有自己的作用域,每個(gè)實(shí)例相互獨(dú)立,不會(huì)互相影響




Vue-loader是什么?

基于webpack的一個(gè)loader,解析和轉(zhuǎn)換.vue文件,提取出其中的邏輯代碼script、樣式代碼style、以及HTML模板template,再分別把它們交給對(duì)應(yīng)的Loader去處理




談?wù)勀銓?duì)vue生命周期的理解。

Vue實(shí)例從創(chuàng)建到銷毀的過(guò)程,就是生命周期。詳細(xì)來(lái)說(shuō)就是從開(kāi)始創(chuàng)建、初始化數(shù)據(jù)、編譯模板、掛載dom、渲染—>更新—>渲染、卸載等一系列過(guò)程




beforeCreate--create—beforeMount--mounted—beforeUpdate—updated—beforeDestory--destroved




談?wù)勀銓?duì)keep-alive的理解。

Keep-alive是vue提供的一個(gè)抽象組件,用來(lái)對(duì)組件進(jìn)行緩存,從而節(jié)省性能,由于是一個(gè)抽象組件,所以在頁(yè)面渲染完畢后不會(huì)渲染成一個(gè)DOM元素




虛擬Dom的實(shí)現(xiàn)原理。

為什么要用:




直接操作DOM引發(fā)頁(yè)面重排重繪,頻繁操作會(huì)造成頻繁渲染,非常消耗性能;我們希望的是每次修改能夠只修改我們想要修改的DOM而不是重新渲染所有的DOM




1) 將DOM樹(shù)轉(zhuǎn)換成JS對(duì)象樹(shù),產(chǎn)生第一個(gè)虛擬DOM樹(shù)(與真實(shí)DOM樹(shù)一樣)




2) 數(shù)據(jù)發(fā)生變化時(shí)(當(dāng)你有增刪操作)產(chǎn)生第二個(gè)虛擬DOM樹(shù)




3) diff算法逐層比較兩個(gè)虛擬DOM樹(shù)并標(biāo)記增刪操作(不會(huì)渲染)




4) 將標(biāo)記出來(lái)的差異(虛擬節(jié)點(diǎn))應(yīng)用到真正的 DOM 樹(shù),而不是將整個(gè)虛擬DOM樹(shù)覆蓋到真正的DOM樹(shù)上




computed和watch的區(qū)別

計(jì)算屬性computed:




支持緩存,只有依賴數(shù)據(jù)發(fā)生改變,才會(huì)重新進(jìn)行計(jì)算

不支持異步,當(dāng)computed內(nèi)有異步緩存操作時(shí)無(wú)效,無(wú)法監(jiān)聽(tīng)數(shù)據(jù)的變化

Computed的屬性值會(huì)默認(rèn)緩存計(jì)算屬性是基于data中聲明過(guò)或者父組件傳遞的props中的數(shù)據(jù)通過(guò)計(jì)算得到的值

監(jiān)聽(tīng)屬性watch:




不支持緩存,數(shù)據(jù)變,直接會(huì)觸發(fā)相應(yīng)的操作

Watch支持異步

監(jiān)聽(tīng)的函數(shù)接收兩個(gè)參數(shù),第一個(gè)參數(shù)是最新的值,第二個(gè)參數(shù)是輸入之前的值

當(dāng)一個(gè)屬性發(fā)生變化時(shí),需要執(zhí)行對(duì)應(yīng)的操作

路由的導(dǎo)航鉤子

主要用來(lái)攔截導(dǎo)航,讓其完成跳轉(zhuǎn)或者取消跳轉(zhuǎn)




全局鉤子:beforeEach、afterEach(after鉤子沒(méi)有next方法,不能改變導(dǎo)航)




路由跳轉(zhuǎn)的四種方式

router-link

this.$router.push()

this.$router.replace()

this.$router.go(n) 向前或者向后跳轉(zhuǎn)n個(gè)頁(yè)面,n可為正整數(shù)或負(fù)整數(shù)

什么是回調(diào)函數(shù)

函數(shù)指針的調(diào)用,即是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)




回調(diào)函數(shù)是一段可執(zhí)行的代碼段,它作為一個(gè)函數(shù)傳遞給其他的代碼,因此函數(shù)是在需要的時(shí)候方便調(diào)用這段(回調(diào)函數(shù))代碼




異步請(qǐng)求在哪個(gè)周期發(fā)起

一般在created里面就可以,如果涉及到需要頁(yè)面加載完成之后的操作的話就用mounted




Created階段的優(yōu)勢(shì)是:請(qǐng)求時(shí)間比較早,頁(yè)面loading時(shí)間相對(duì)較短




Mounted階段的優(yōu)勢(shì)是:頁(yè)面已經(jīng)渲染完成,如果想請(qǐng)求之后進(jìn)行dom操作的話,必須在mounted階段發(fā)起請(qǐng)求




vuex和本地存儲(chǔ)的區(qū)別

vuex存的是狀態(tài),存儲(chǔ)在內(nèi)存,localstorage是瀏覽器提供的接口,讓你存的是文件,以文件的形式存儲(chǔ)在本地




vuex用于組件之間的傳值,localstorage則主要用于頁(yè)面之間的傳值




正向代理和反向代理

正向代理:




用戶發(fā)送請(qǐng)求到自己的代理服務(wù)器

自己的代理服務(wù)器發(fā)送請(qǐng)求到服務(wù)器

服務(wù)器將數(shù)據(jù)返回到自己的代理服務(wù)器

自己的代理服務(wù)器再將數(shù)據(jù)返回給用戶

反向代理:




用戶發(fā)送請(qǐng)求到服務(wù)器

反向代理服務(wù)器發(fā)送請(qǐng)求到真正的服務(wù)器

真正的服務(wù)器將數(shù)據(jù)返回給反向代理服務(wù)器

反向代理服務(wù)器再將數(shù)據(jù)的返回給用戶

vue插槽

插槽就是子組件中的提供給父組件使用的一個(gè)占位符,用<slot></slot>表示,父組件可以在這個(gè)占位符中填充任何模塊代碼,如HTML、組件等,填充的內(nèi)容會(huì)替換子組件的<slot></slot>標(biāo)簽




axios和ajax的區(qū)別

axios是通過(guò)promise實(shí)現(xiàn)對(duì)ajax技術(shù)的一種封裝,就像jquery實(shí)現(xiàn)ajax封裝一樣。




ajax技術(shù)實(shí)現(xiàn)了頁(yè)面的局部數(shù)據(jù)刷新,axios實(shí)現(xiàn)了對(duì)ajax的封裝。axios是ajax,ajax不止axios。




vue的src目錄詳解

assets:放置靜態(tài)資源




components:放置通用模塊組件




http:放置與后臺(tái)api相關(guān)的文件




pages:放置主要頁(yè)面的組件




router:放置路由設(shè)置文件,指定路由對(duì)應(yīng)的組件




store:放置vuex需要的狀態(tài)關(guān)聯(lián)文件,設(shè)置公共的state、mutations等




app.vue:入口組件,pages里的組件會(huì)被插入此組件中,此組件再插入index.html文件里,形成的單頁(yè)面應(yīng)用




main.js:入口js文件,影響全局,作用是引入全局使用的庫(kù)、公共的樣式和方法、設(shè)置路由等




vue的常用修飾符

.once 事件只觸發(fā)一次




.native 綁定在組件上 點(diǎn)擊組件觸發(fā)事件




.stop 阻止事件冒泡




.prevent 阻止默認(rèn)事件




.capture 在事件捕獲階段觸發(fā)




.self 事件只有在本身元素觸發(fā)




.lazy 使input事件變成change事件




. trim 過(guò)濾首尾空白字符




.number 規(guī)定只能輸入數(shù)字




webpack創(chuàng)建打包

創(chuàng)建:vue init webpack xxx




啟動(dòng): npm run dev




打包:npm run build




一般如果對(duì)方提出讓介紹一下項(xiàng)目,我們就挑一個(gè)最熟悉的去回答即可 并且問(wèn)簡(jiǎn)歷上前兩個(gè)項(xiàng)目的概率會(huì)大一點(diǎn)




所以熟悉簡(jiǎn)歷 最好有方向?。?! 以下內(nèi)容是以往客戶面試的總結(jié)萬(wàn)變不離其宗 可以結(jié)合以下總結(jié)以及自己簡(jiǎn)歷上的項(xiàng)目來(lái)復(fù)習(xí)




1.介紹一下項(xiàng)目

2.介紹一下vueX

  Vuex是一個(gè)專為Vue.js應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。




前端存儲(chǔ)的值,當(dāng)頁(yè)面更新的時(shí)候,刷新這個(gè)值會(huì)保留嗎?

1、頁(yè)面跳轉(zhuǎn)后將數(shù)據(jù)存在vuex里面




2、在當(dāng)前頁(yè)面刷新頁(yè)面得時(shí)候?qū)⒅荡娴絪essionStroage里面




3、注意:在改變vuex里面值得時(shí)候要?jiǎng)h除sessionStroage里面得數(shù)據(jù),從新存儲(chǔ)




在vuex得Mutation里面刪除sessionStroage里面得數(shù)據(jù);




3.vue的指令都有那些?

v-if v-for v-show v-on v-bind




4.v-if和v-show的區(qū)別?

1. v-show




不管初始的條件是什么,元素總是會(huì)被渲染,并且只是簡(jiǎn)單的基于 CSS display: none 或者 display: block 的屬性進(jìn)行切換。




2. v-if




會(huì)根據(jù)初始的條件(data里自己的定義的數(shù)據(jù))來(lái)進(jìn)行真正的渲染(組件真正的銷毀和重建),




如果條件為真,才會(huì)開(kāi)始渲染條件塊,如果條件為假,則不會(huì)渲染條件塊。

沒(méi)耐心的朋友想領(lǐng)取更多面試題及解析答案請(qǐng)戳下方鏈接,或直接關(guān)注公粽號(hào):程序員子木




5.vue組件之間的傳值通過(guò)什么方式?

父?jìng)髯?br>



方法:父組件內(nèi)設(shè)置要傳的數(shù)據(jù),在父組件中引用的子組件上綁定一個(gè)自定義屬性并把數(shù)據(jù)綁定在自定義屬性上,在子組件添加參數(shù)props接收即可。




子傳父




方法:子組件通過(guò)vue實(shí)例方法$emit進(jìn)行觸發(fā)并且可以攜帶參數(shù),父組件監(jiān)聽(tīng)使用@(v-on)進(jìn)行監(jiān)聽(tīng),然后進(jìn)行方法處理。




6.當(dāng)gitpor的時(shí)候,文件產(chǎn)生了沖突,如何如何拉取代碼?

7.vue封裝組件的過(guò)程?

● 首先,使用Vue.extend()創(chuàng)建一個(gè)組件




● 然后,使用Vue.component()方法注冊(cè)組件




● 接著,如果子組件需要數(shù)據(jù),可以在props中接受定義




● 最后,子組件修改好數(shù)據(jù)之后,想把數(shù)據(jù)傳遞給父組件,可以使用emit()方法




8.vue的生命周期

  從一個(gè)組件創(chuàng)建、數(shù)據(jù)初始化、掛載、更新、銷毀,這就是一個(gè)組件所謂的生命周期。




  beforeCreate:實(shí)例剛在內(nèi)存中被創(chuàng)建出來(lái),此時(shí),還沒(méi)有初始化好 data 和 methods 屬性




  created:實(shí)例已經(jīng)在內(nèi)存中創(chuàng)建OK,此時(shí) data 和 methods 已經(jīng)創(chuàng)建OK,此時(shí)還沒(méi)有開(kāi)始 編譯模板




  beforeMount:此時(shí)已經(jīng)完成了模板的編譯,但是還沒(méi)有掛載到頁(yè)面中




mounted:此時(shí),已經(jīng)將編譯好的模板,掛載到了頁(yè)面指定的容器中顯示




- 運(yùn)行期間的生命周期函數(shù):




  beforeUpdate:狀態(tài)更新之前執(zhí)行此函數(shù), 此時(shí) data 中的狀態(tài)值是最新的,但是界面上顯示的 數(shù)據(jù)還是舊的,因?yàn)榇藭r(shí)還沒(méi)有開(kāi)始重新渲染DOM節(jié)點(diǎn)




  updated:實(shí)例更新完畢之后調(diào)用此函數(shù),此時(shí) data 中的狀態(tài)值 和 界面上顯示的數(shù)據(jù),都已經(jīng)完成了更新,界面已經(jīng)被重新渲染好了!




- 銷毀期間的生命周期函數(shù):




  beforeDestroy:實(shí)例銷毀之前調(diào)用。在這一步,實(shí)例仍然完全可用。




  destroyed:Vue 實(shí)例銷毀后調(diào)用。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽(tīng)器會(huì)被移除,所有的子實(shí)例也會(huì)被銷毀。




9.和后端交互,Ajax請(qǐng)求一般在哪個(gè)生命周期中進(jìn)行請(qǐng)求】

Mounted created




10.Vuex是一個(gè)用來(lái)管理組件之間通信的插件

【讓自己介紹了一下上個(gè)項(xiàng)目;

說(shuō)一下axios和ajax的區(qū)別,有關(guān)promise同時(shí)發(fā)送兩個(gè)請(qǐng)求如何實(shí)現(xiàn)、如何從一個(gè)頁(yè)面把滾動(dòng)條的位置發(fā)送到另一個(gè)頁(yè)面;

axios是通過(guò)promise實(shí)現(xiàn)對(duì)ajax技術(shù)的一種封裝,




ajax技術(shù)實(shí)現(xiàn)了網(wǎng)頁(yè)的局部數(shù)據(jù)刷新,axios實(shí)現(xiàn)了對(duì)ajax的封裝。




說(shuō)一下經(jīng)常使用的es6的新特性,結(jié)構(gòu)賦值有使用過(guò)嗎;




promise承諾




主要解決回調(diào)地獄 ,回調(diào)函數(shù)的嵌套。




就能夠讓ajax請(qǐng)求按照我們要求的順序執(zhí)行,也能代碼不嵌套。




客戶端渲染和服務(wù)器渲染;

好像是前端如何實(shí)現(xiàn)20條進(jìn)程的問(wèn)題,我也不太明白這個(gè)問(wèn)題;




3.盒子模型.

  把所有的網(wǎng)頁(yè)元素都看成一個(gè)盒子,它具有: content,padding,border,margin 四個(gè)屬性,這就是盒子模型。




  盒子模型有幾種模式?




1、W3C標(biāo)準(zhǔn)盒子模型

2、IE盒子模型

1.說(shuō)一下你在項(xiàng)目中遇到的技術(shù)難點(diǎn),并且是如何解決的

2.js的基本數(shù)據(jù)類型

1.JavaScript(以下簡(jiǎn)稱js)的數(shù)據(jù)類型分為兩種:原始類型(即基本數(shù)據(jù)類型)和對(duì)象類型(即引用數(shù)據(jù)類型);




2.js常用的基本數(shù)據(jù)類型包括undefined、null、number、boolean、string;




3.js的引用數(shù)據(jù)類型也就是對(duì)象類型Object




3.如果要你自己封裝一個(gè)級(jí)聯(lián)選擇框,你會(huì)封裝哪些屬性

4.跨域問(wèn)題

Vue反向代理









1.小程序的傳參方法有哪幾種

2.你使用過(guò)哪些方法,來(lái)提高微信小程序的應(yīng)用速度

3.請(qǐng)談?wù)勑〕绦虻纳芷?br>
4.微信小程序的跳轉(zhuǎn)方式

5.你在開(kāi)發(fā)微信小程序的時(shí)候遇到的問(wèn)題

6.如何使用vuex保存自己想要的數(shù)據(jù),刪除不需要的數(shù)據(jù)

7.除了屬性綁定和vuex,還可以使用什么方式進(jìn)行父子通信

8.cookie和localStorage的區(qū)別,以及cookie不設(shè)置時(shí)間的問(wèn)題

9.怎樣用微信小程序?qū)崿F(xiàn)H5的一些特性

10.路由的哈希模式和history模式

11.微信小程序,如何做背景圖片

12.微信小程序頁(yè)面棧的問(wèn)題

13.微信小程序關(guān)于授權(quán)的系列問(wèn)題】






1.最近項(xiàng)目介紹

2.flex布局

3.自適應(yīng)原理

4.js中數(shù)組求和了解幾種

5.watch 和 computed methods的區(qū)別

計(jì)算屬性:computed




computed:計(jì)算屬性是依賴的值改變會(huì)重新執(zhí)行函數(shù),計(jì)算屬性是取返回值作為最新結(jié)果,所以里面不能異步的返回結(jié)果。不能寫(xiě)異步邏輯。




監(jiān)聽(tīng)屬性:Watch




methods是方法




computed 和 methods 相比,最大區(qū)別是 computed 有緩存:如果 computed 屬性依賴的屬性沒(méi)有變化,計(jì)算屬性會(huì)立即返回之前的計(jì)算結(jié)果,而不必再次執(zhí)行函數(shù)。而methods里的函數(shù)在每次調(diào)用時(shí)都要執(zhí)行。




watch 和 computed 相比,computed 是計(jì)算出一個(gè)屬性(廢話),而 watch 則可能是做別的事情(如上報(bào)數(shù)據(jù))




1 、watch無(wú)緩存;2、watch適用于:需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開(kāi)銷較大的操作時(shí)









1.vue前端開(kāi)發(fā)流程

3.權(quán)限問(wèn)題(axios請(qǐng)求響應(yīng)攔截)

4.數(shù)據(jù)雙向綁定原理

數(shù)據(jù)改變,試圖發(fā)生改變




5.項(xiàng)目?jī)?yōu)化】

一、路由懶加載




二、keep-alive緩存頁(yè)面




三、v-for 遍歷避免同時(shí)使用 v-if




四、圖片懶加載




五、第三方插件按需引入




vuex 一般在什么場(chǎng)景下使用

場(chǎng)景有:?jiǎn)雾?yè)應(yīng)用中,組件之間的狀態(tài)、音樂(lè)播放、登錄狀態(tài)、加入購(gòu)物車vuex是一種集中式狀態(tài)管理模式,它按照一定的規(guī)則管理狀態(tài),保證狀態(tài)的變化是可預(yù)測(cè)的。




state:定義初始化狀態(tài)




getters:獲取狀態(tài)




mutations:設(shè)置狀態(tài)




actions:異步提交mutations




modules:把狀態(tài)管理模塊化,各自的組件構(gòu)成各自的模塊




引進(jìn)組件的步驟

在template中引入組件;




在script的第一行用import引入路徑;




用component中寫(xiě)上組件名稱。




vuex是怎么使用的




axios的封裝,怎么封裝




vue中的路由怎么配置




都用過(guò)element ui的哪些組件

————————————————

領(lǐng)取更多面試題及解析答案請(qǐng)戳下方鏈接,或直接關(guān)注公粽號(hào):程序員子木



關(guān)鍵詞:試題,總結(jié)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉