2024前端面試題(三)

21. 權(quán)限判斷

主要分兩種方式。第一種是用戶登錄后,系統(tǒng)獲取其權(quán)限信息,然后根據(jù)這些權(quán)限篩選出用戶可以訪問(wèn)的路由,并使用addRoutes動(dòng)態(tài)添加這些路由。在這個(gè)過(guò)程中,router.beforeEach()方法被用來(lái)進(jìn)行路由守衛(wèi)。另一種方式是在初始化時(shí)掛載全部路由,并在每個(gè)路由上標(biāo)記出訪問(wèn)該路由所需的權(quán)限。在用戶嘗試進(jìn)行路由跳轉(zhuǎn)(在beforeRouteLeave之前)時(shí),系統(tǒng)會(huì)驗(yàn)證用戶是否擁有該權(quán)限。

22. setup的執(zhí)行時(shí)機(jī)

在組件的beforeCreate生命周期鉤子之前

23.是否能操作dom

獲取DOM節(jié)點(diǎn):

  • getElementById():根據(jù)元素的ID獲取DOM節(jié)點(diǎn)。
  • getElementsByTagName():根據(jù)元素的標(biāo)簽名獲取DOM節(jié)點(diǎn)列表。
  • getElementsByClassName():根據(jù)元素的類名獲取DOM節(jié)點(diǎn)列表。
  • querySelector():使用CSS選擇器獲取第一個(gè)匹配的DOM節(jié)點(diǎn)。
  • querySelectorAll():使用CSS選擇器獲取所有匹配的DOM節(jié)點(diǎn),返回的是一個(gè)類似數(shù)組的對(duì)象。

操作DOM:

  • el.getAttribute():獲取元素的某個(gè)屬性值。
  • el.setAttribute():設(shè)置元素的某個(gè)屬性值。
  • el.removeAttribute():刪除元素的某個(gè)屬性。
  • el.dataset:包含元素的所有H5自定義屬性,可以直接通過(guò)屬性名訪問(wèn)和設(shè)置。
  • el.innerHTML:獲取或設(shè)置元素的內(nèi)部HTML內(nèi)容。
  • el.innerText:獲取或設(shè)置元素的文本內(nèi)容,不會(huì)解析HTML標(biāo)簽。
  • el.value:用于獲取或設(shè)置表單元素的值。

24. ref和reactive的區(qū)別

定義數(shù)據(jù)方面:

  • ref通常用于定義基本類型數(shù)據(jù)。
  • reactive主要用于定義對(duì)象或數(shù)組類型的數(shù)據(jù)。雖然ref也可以用于定義對(duì)象或數(shù)組,但內(nèi)部會(huì)將其轉(zhuǎn)化為reactive代理對(duì)象。

原理方面:

  • ref通過(guò)Object.defineProperty()getset方法實(shí)現(xiàn)數(shù)據(jù)代理。
  • reactive使用Proxy實(shí)現(xiàn)數(shù)據(jù)代理,并通過(guò)Reflect來(lái)操作源對(duì)象內(nèi)部的數(shù)據(jù)。

使用方面:

  • 使用ref定義的數(shù)據(jù)在操作時(shí)需要通過(guò).value來(lái)訪問(wèn)或修改值,但在模板中不需要。
  • 使用reactive定義的數(shù)據(jù)在操作時(shí)不需要通過(guò).value

25. axios和ajax的區(qū)別

axios是對(duì)ajax技術(shù)的一種封裝,類似于jquery對(duì)ajax的封裝。ajax技術(shù)實(shí)現(xiàn)了局部數(shù)據(jù)的刷新,而axios提供了對(duì)ajax的封裝,使其更加方便和易用。可以說(shuō)axiosajax的一種實(shí)現(xiàn),但ajax不僅限于axiosaxios有的功能ajax都有,但ajax有的功能axios不一定都有。

26. vuex是什么

vuex是一個(gè)專為vue.js設(shè)計(jì)的狀態(tài)管理庫(kù)。它采用集中式存儲(chǔ)來(lái)管理應(yīng)用的所有組件的狀態(tài),確保這些狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。vuex包含五大模塊:

  • state:用于存儲(chǔ)數(shù)據(jù)狀態(tài),可以通過(guò)this.$store.state.屬性名來(lái)獲取數(shù)據(jù)。
  • getter:基于現(xiàn)有數(shù)據(jù)計(jì)算新數(shù)據(jù),類似于Vue中的計(jì)算屬性。
  • mutations:用于改變數(shù)據(jù)的函數(shù)集合,不能有異步操作,因?yàn)椴荒軐?shí)時(shí)監(jiān)聽和跟蹤數(shù)據(jù)狀態(tài)的變化。
  • actions:提交mutation的函數(shù),可以包含異步操作,通常通過(guò)this.$store.dispatch('actionName', payload)來(lái)調(diào)用。
  • modules:對(duì)vuex進(jìn)行模塊化管理,使得狀態(tài)管理更加清晰和可維護(hù)。

27. 父子組件之間的通信有哪些

  • 使用props向子組件傳遞數(shù)據(jù),使用$emit觸發(fā)事件向父組件發(fā)送消息。
  • 使用$parent$children直接訪問(wèn)父組件或子組件的實(shí)例。
  • 使用provideinject在祖先組件和后代組件之間傳遞數(shù)據(jù)。
  • 使用eventBus(事件總線)在不同組件之間傳遞事件。
  • 使用Vuex進(jìn)行全局狀態(tài)管理,實(shí)現(xiàn)任意組件間的數(shù)據(jù)共享和通信。
  • 使用v-model實(shí)現(xiàn)表單元素和組件的雙向數(shù)據(jù)綁定。
  • 使用$refs訪問(wèn)子組件的實(shí)例,從而直接操作子組件的數(shù)據(jù)和方法。

28. 哪個(gè)屬性和值可以使元素同時(shí)具有塊級(jí)元素和行內(nèi)元素屬性

可以將其display屬性設(shè)置為inline-block

29. 放在html里的哪一部分js代碼會(huì)在頁(yè)面加載的時(shí)候被執(zhí)行

body

30. ['1','2','3'].map(parseInt)返回結(jié)果為

1,NaN,NaN

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

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

  • 理論基礎(chǔ) js中數(shù)組常用的方法有哪些? Array.map():將數(shù)組中的每個(gè)元素調(diào)用一個(gè)提供的函數(shù),結(jié)果作為一個(gè)...
    _Y_X_閱讀 799評(píng)論 0 1
  • vue2的: 1.生命周期函數(shù): 1.1 什么是生命周期函數(shù) 我理解的生命周期函數(shù)就是 vue 實(shí)例從創(chuàng)建到銷毀的...
    tang溫暖閱讀 320評(píng)論 0 0
  • 一、CSS問(wèn)題 1.flex布局 display:flex; 在父元素設(shè)置,子元素受彈性盒影響,默認(rèn)排成一行,如果...
    陳二狗想吃肉閱讀 793評(píng)論 0 9
  • 前言 面試題是永遠(yuǎn)都準(zhǔn)備不完的?。。。?! 前端常見的一些問(wèn)題 1.前端性能優(yōu)化手段? 1. 盡可能使用雪碧圖 2....
    Rebirth_Wang閱讀 939評(píng)論 0 0
  • 前言 面試題是永遠(yuǎn)都準(zhǔn)備不完的?。。。?! 前端常見的一些問(wèn)題 1.前端性能優(yōu)化手段? 1. 盡可能使用雪碧圖2. ...
    ZJ懶得寫簡(jiǎn)書閱讀 10,565評(píng)論 22 266

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