面試常問題(簡述)

1.$nextTick()

  • dom更新是異步的,$nextTick()中的代碼會在dom更新后執(zhí)行保證執(zhí)行順序
  • 原理:支持 Promise 的環(huán)境中,Promise.then,否則就用setTimeOut 或 setImmediate

2.keep-alive

  • 組件緩存,把組件放入內(nèi)存中避免銷毀和重建

3.混入(重點)mixin

  • 是一個擁有vue組件所有選項的對象 , 這個對象上的所有選項可以加入到.vue的文件中
  • 在組件本身和mixin發(fā)生沖突,以組件本身為準
  • 想在項目中每個組件上都某些事情的時候就用到混入mixin
  • 實際應(yīng)用: 計算項目中所有組件的數(shù)量
    每個組件都有mothen鉤子函數(shù),渲染時都會執(zhí)行
    聲明一個變量為0,將
    在main.js中調(diào)用vue實例的mixin方法傳入一個對象,對象中可以聲明mothen鉤子函數(shù),讓變量++,在打印這個變量

4.v-modle原理(重點)

  • <input :vaule="msg" @input="msg=$event.terget.value"/>
  • 將input標簽的value屬性動態(tài)綁定一個變量,通過input事件拿到輸入的內(nèi)容賦值給變量

5.開發(fā)中遇到的困難(重點)

6.數(shù)組方法

  • arr.map((item,index)=>{ })映射數(shù)組
  • arr.forEach((item,index)=>{ })遍歷數(shù)組
  • arr.filter((item,index)=>{ })
  • arr.sort() 將數(shù)組里的項從小到大排序
  • arr.reverse() 反轉(zhuǎn)數(shù)組項的順序。
  • arr.concat(),合并數(shù)組,括號里面寫內(nèi)容 ("字符串要加引號"),
  • arr.slice( 1 , 3 )截取數(shù)組參數(shù)1是開始下標,參數(shù)2是結(jié)束下標,包括開始不包括結(jié)束
  • arr.splice( 2,0,4,6 )動態(tài)刪除添加
  • arr.every(item=>{return item>3}) 判斷數(shù)組中每一項都是否滿足條件,只有所有項都滿足條件,才會返回true。
  • arr.some(item=>{return item>3}) 判斷數(shù)組中是否存在滿足條件的項,只要有一項滿足條件,就會返回true。

7.computend()

  • 一個變量是由另一個變量計算處理后得來就用到計算屬性
  • 計算屬性相比普通函數(shù)的優(yōu)勢:計算屬性會把計算結(jié)果存入內(nèi)存,依賴項不變直接從內(nèi)存中取結(jié)果,不會重新計算

8.宏任務(wù),微任務(wù)

  • JSv8引擎是單線程的,所以耗時任務(wù)(異步任務(wù))會交給宿主環(huán)境去執(zhí)行,執(zhí)行結(jié)束后會把回調(diào)放到任務(wù)隊列中排隊
  • 此時就有了微任務(wù)和宏任務(wù),異步任務(wù)的兩種分類

9.this.$set()

  • vue2中給data中聲明的響應(yīng)式對象數(shù)據(jù)添加屬性,
    語法: this.$set('對象名','key','value')

10.注冊指令

  • 在install方法中參數(shù)可以獲取vue實例.vue實例上有directive方法用來注冊自定義指令,
  • 第一個參數(shù)是指令名,第二個參數(shù)是對象對象中有邏輯函數(shù),函數(shù)有兩個形參el,binding,
  • el是綁定的標簽,binding是自定義屬性值

12.vue3和vue2區(qū)別

  • 1.vue3中拋出了兩個函數(shù) createVNode()創(chuàng)建虛擬Dom 和 render()掛載到真實Dom上
  • 2.vue2中響應(yīng)式依賴ES5 Object.defineproperty() 缺陷不能偵聽屬性的增加 vue3中依賴ES6 Proxy 14種對象操作方法都可以攔截
  • 3.vue2選項式api,vue3組合式api,并且可以混用
  • 4.移除了this關(guān)鍵字,新增setup函數(shù),形參props,{emit}
  • 5.響應(yīng)式數(shù)據(jù)在ref函數(shù)中聲明
    ...

13.虛擬DOM

  • 就是對象,保存了標簽名,屬性,子節(jié)點信息
  • vue3中拋出了兩個函數(shù) createVNode()創(chuàng)建虛擬Dom 和 render()掛載到真實Dom上
  • 語法: 引入 improt {createVNode,render} from 'vue'
    創(chuàng)建虛擬Dom const obj = createVNode('標簽或者組件',{屬性},[子節(jié)點])
    渲染真實Dom render(VNode,真實Dom節(jié)點)

14.http狀態(tài)碼

  • 200 - 請求成功^^^^
  • 201 - 已創(chuàng)建。成功請求并創(chuàng)建了新的資源
  • 202 - 已經(jīng)接受請求,但未處理完成
  • 301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL^^^^
  • 303 - 請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI。
    今后任何新的請求都應(yīng)使用新的URI代替
  • 306 - 已經(jīng)被廢棄的HTTP狀態(tài)碼
  • 401 - token過期,請求過期^^^^^
  • 404 - 請求的資源(網(wǎng)頁等)不存在,請求失敗^^^^
  • 500 - 內(nèi)部服務(wù)器錯誤
  • 501 - 服務(wù)器不支持請求的功能,無法完成請求

15.請求響應(yīng)攔截器

  • axios.interceptors.response.use(因特撒噴特斯)
  • 請求攔截器:在請求頭上添加token
  • 響應(yīng)攔截器:服務(wù)器返回登錄狀態(tài)失效,需要重新登錄的時候,跳轉(zhuǎn)到登錄頁。token過期,token續(xù)簽

16.路由前置守衛(wèi)

  • router.beforeEach((to, from, next) => {})
  • 作用:判斷用戶是否有權(quán)限跳轉(zhuǎn)某些路由,to()到哪里去,from()從哪里來,next()放行,next(false)不放行
  • 例如:用戶沒有登錄 而是直接通過修改瀏覽器 url 來訪問網(wǎng)頁,這種操作無疑是不安全的。
  • 路由導(dǎo)航守衛(wèi)可以讓我們對用戶要跳轉(zhuǎn)的路由做一次檢查,符合條件后放行,不符合條件則強制用戶跳轉(zhuǎn)登錄頁面。

17.原生js實現(xiàn)輪播圖

  • 維護一個索引值
  • 遍歷所有圖片 , 把所有圖片透明度設(shè)置為0 , 在把當前圖片根據(jù)索引透明度設(shè)置為1
  • 使用定時器讓索引值++,如果大于圖片索引長度就設(shè)置為0
  • 注冊鼠標移入事件清除定時器 , 鼠標移入事件重新調(diào)用定時器
  • 上一張按鈕下一頁按鈕就是注冊點擊事件讓索引++或--

18.輸入url地址按下回車發(fā)生了什么?

  • 1.輸入url地址后,首先進行DNS解析,將相應(yīng)的域名解析為IP地址;
  • 2.客戶端根據(jù)IP地址去尋找相應(yīng)的服務(wù)器;本地緩存,遠程服務(wù)器
  • 3.與服務(wù)器進行TCP的三次握手;
  • 4.客戶端找到相應(yīng)的資源庫;
  • 5.根據(jù)資源庫返回頁面信息;
  • 6.瀏覽器根據(jù)自身的執(zhí)行機制解析頁面;渲染頁面
  • 7.最后服務(wù)器將解析信息返回給客戶端,進行TCP的四次揮手。
  1. Object.defineProperty 響應(yīng)式原理?
  • Object.defineProperty() 可以攔截對于對象屬性的訪問
  • 這個方法中第一個參數(shù)是攔截對象名,第二個是對象中的key,第三個是對象
  • 對象中有g(shù)et和set兩個函數(shù),訪問對象的屬性值時,獲取到的就是get函數(shù)的返回值
  • 設(shè)置對象的屬性值時,set函數(shù)的參數(shù)newvalue就是設(shè)置的新值
  • 可以再set函數(shù)中將新值賦值給input的value值就實現(xiàn)了數(shù)據(jù)影響視圖
  • 還可通過監(jiān)聽input事件拿到視圖中的值賦值給get函數(shù)中return的變量實現(xiàn)視圖影響數(shù)據(jù)
最后編輯于
?著作權(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)容

  • 一、CSS問題 1.flex布局 display:flex; 在父元素設(shè)置,子元素受彈性盒影響,默認排成一行,如果...
    陳二狗想吃肉閱讀 793評論 0 9
  • 1. 說一下對HTML語義化的理解? 語義化就是選擇與語義相符合的標簽,使代碼語義化,這樣不僅便于開發(fā)者進行閱讀,...
    陳二狗想吃肉閱讀 2,481評論 3 16
  • css相關(guān) 1. 萬能居中 1.margin: 0 auto;水平 2.text-align: center;水平...
    chaocc閱讀 1,120評論 0 2
  • client,page和screen的區(qū)別? clientX,clientY是觸摸點相對于viewport視口x,...
    change_22fa閱讀 1,844評論 1 1
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 7,842評論 0 4

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