Vue3 面試題及詳細答案120道 (1-15 )

前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。

前后端面試題-專欄總目錄

在這里插入圖片描述

文章目錄

  • 一、本文面試題目錄
      • 1. Vue 3相比Vue 2有哪些主要改進?
      • 2. 什么是Composition API?它有什么優勢?
      • 3. Vue 3中的響應式系統是如何工作的?
      • 4. Proxy與Object.defineProperty相比有什么優勢?
      • 5. Vue 3中的虛擬DOM優化了哪些方面?
      • 6. Tree - shaking在Vue 3中是如何工作的?
      • 7. Vue 3中的組件生命周期鉤子有哪些變化?
      • 8. 如何在Vue 3項目中進行性能優化?
      • 9. Vue 3中的Teleport是什么?有什么作用?
      • 10. Vue 3中的Suspense是什么?如何使用?
      • 11. Vue 3中的Fragment是什么?有什么作用?
      • 12. Vue 3中的工程化工具Vite是什么?有什么優勢?
      • 13. Vue 3的響應式系統中ref和reactive有什么區別?
      • 14. 在Vue 3中如何使用TypeScript?
      • 15. Vue 3中script setup的實現原理是什么?有什么特點?
  • 二、120道面試題目錄列表

一、本文面試題目錄

1. Vue 3相比Vue 2有哪些主要改進?

Vue 3有諸多改進。在性能上,使用Proxy替代Object.defineProperty實現響應式系統,能更高效追蹤數據變化,提升渲染性能;對虛擬DOM進行優化,包括編譯器優化、Tree - shaking支持以及更高效的差異更新等,使得渲染速度更快。在代碼組織與復用方面,引入Composition API,讓開發者可將組件邏輯按功能組織,提高代碼可維護性與可重用性。在類型支持上,提供了更好的TypeScript支持,包括類型定義文件,利于編碼時進行類型檢查。此外,還新增了Teleport、Suspense等特性,支持多根節點,重構了全局API等。

2. 什么是Composition API?它有什么優勢?

Composition API是Vue 3中新引入的API設計模式。它允許開發者更靈活地組織和管理組件邏輯。優勢如下:更好的代碼組織,能將邏輯按功能相關方式組織,而非按生命周期鉤子函數組織;更好的代碼重用,可將邏輯封裝為可重用函數在多個組件間共享;更好的類型推斷,基于TypeScript能更好推斷函數和響應式數據類型,為代碼編輯器提供更好支持;更好的邏輯復用,提供如watch、computed等內置函數處理常見邏輯場景。

3. Vue 3中的響應式系統是如何工作的?

Vue 3使用ES6的Proxy實現響應式系統。當一個響應式對象被訪問時,Vue 3通過Proxy攔截器捕獲該訪問,建立依賴關系,將訪問與正在訪問的組件關聯。當響應式對象的屬性發生變化時,Proxy攔截器觸發,通知相關組件更新。并且采用“代理轉發”技術,只有真正訪問響應式對象屬性時才建立依賴關系,避免不必要的依賴追蹤,提升性能。例如:

import { reactive } from 'vue';
const state = reactive({ count: 0 });
// 訪問state.count時建立依賴關系
console.log(state.count);
// 修改state.count時觸發更新
state.count++;

4. Proxy與Object.defineProperty相比有什么優勢?

Proxy相比Object.defineProperty優勢明顯。性能上,Proxy本身性能較好。功能方面,Proxy可以攔截屬性的訪問、賦值、刪除等13種操作,而Object.defineProperty主要能劫持屬性的讀取和賦值;Proxy不需要在初始化時遍歷所有屬性,對于多層屬性嵌套,只有訪問某個屬性時才遞歸處理下一級屬性,而Object.defineProperty對對象的已有屬性值的讀取和修改進行劫持,對象直接添加新屬性或刪除已有屬性時,界面不會自動更新;Proxy還可以監聽數組的索引和length屬性變化,而Object.defineProperty對數組處理存在局限性 。

5. Vue 3中的虛擬DOM優化了哪些方面?

Vue 3對虛擬DOM的優化體現在多方面。編譯器優化上,標記和提升所有靜態根節點,diff時只比較動態節點內容,提高了對比效率。例如,模板中靜態部分在多次渲染中不會重復對比。支持Tree - shaking,可移除未使用代碼,減小打包體積。在差異更新方面,通過Patch Flag等技術,給動態標簽末尾加上相應標記,只有帶Patch Flag的節點才被認為是動態元素并追蹤屬性修改,能快速定位動態節點,無需逐個逐層遍歷,極大提升虛擬DOM diff的性能。

6. Tree - shaking在Vue 3中是如何工作的?

在Vue 3中,Tree - shaking工作依賴于現代構建工具(如webpack 4及以上版本)。推薦使用按需導入方式引入第三方組件庫,而非直接導入整個庫,這樣構建工具在打包時能分析代碼中實際使用的模塊。例如創建一個包含多個函數的文件utils.js ,若代碼中只使用了其中部分函數,構建打包輸出時,Tree - shaking優化會自動去除未使用函數的代碼。同時,Vue 3本身對一些未使用的全局API等進行了優化,通過Tree - shaking技術,使得最終包體積更小,應用加載速度更快。

7. Vue 3中的組件生命周期鉤子有哪些變化?

Vue 3引入了一些新的組件生命周期鉤子,如onBeforeMount、onMounted、onBeforeUpdate、onUpdated等。與Vue 2相比,使用方式有所不同,在Vue 3中這些鉤子函數需要從’vue’中導入使用。例如在setup函數中使用生命周期鉤子:

import { onMounted } from 'vue';
export default {setup() {onMounted(() => {console.log('組件已掛載');});}
};

此外,Vue 3還提供了與組件卸載相關的鉤子onBeforeUnmount、onUnmounted等 。

8. 如何在Vue 3項目中進行性能優化?

可從多方面進行性能優化。代碼分割方面,將代碼按路由或功能模塊進行分割,實現按需加載,減少初始加載的代碼量。例如使用動態導入實現組件懶加載:const MyComponent = () => import('./MyComponent.vue'); 。懶加載不僅用于組件,對圖片等資源也適用。避免不必要的計算和渲染,如合理使用computed屬性,其值只有在依賴變化時才重新計算;使用v - if和v - show時,根據場景合理選擇,v - if是真正的條件渲染,條件為假時相關DOM元素不會存在,v - show通過CSS的display屬性控制元素顯示隱藏,適用于頻繁切換顯示狀態的場景 。還可利用Vue 3的響應式系統優化,避免過度的響應式數據嵌套等。

9. Vue 3中的Teleport是什么?有什么作用?

Teleport是Vue 3中新增的一個內置組件。它允許將組件的部分內容渲染到DOM樹中的其他位置,而不是組件自身所在的位置。作用如下:在組件外部渲染內容,通過它可將組件內部內容渲染到組件外部指定位置,實現更靈活布局,比如將模態框渲染到標簽下,避免模態框樣式受限于組件內部的CSS樣式層級。解決層級限制問題,當組件樣式受父級組件CSS限制無法實現期望布局時,使用Teleport將組件內容渲染到組件外部位置,可避免該限制 。例如:

<template><Teleport to="body"><div class="modal"><!-- 模態框內容 --></div></Teleport>
</template>

10. Vue 3中的Suspense是什么?如何使用?

Suspense是Vue 3中用于處理異步組件加載的新特性。它可以在等待異步組件加載時顯示一些占位符內容,提升用戶體驗。使用時,將需要異步加載的組件包裹在組件內,通過設置<template #default>顯示加載完成后的組件內容,<template #fallback>顯示加載過程中的占位符內容。例如:

<template><Suspense><template #default><AsyncComponent /></template><template #fallback><div>加載中...</div></template></Suspense>
</template>
<script setup>
import { defineAsyncComponent } from 'vue';
const AsyncComponent = defineAsyncComponent(() => import('./AsyncComponent.vue'));
</script>

若異步組件加載失敗,還可結合錯誤處理機制在Suspense中進行相應提示 。


No.大劍師精品GIS教程推薦
0地圖渲染基礎- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】
1Openlayers 【入門教程】 - 【源代碼+示例 300+】
2Leaflet 【入門教程】 - 【源代碼+圖文示例 150+】
3MapboxGL【入門教程】 - 【源代碼+圖文示例150+】
4Cesium 【入門教程】 - 【源代碼+綜合教程 200+】
5threejs【中文API】 - 【源代碼+圖文示例200+】

11. Vue 3中的Fragment是什么?有什么作用?

Fragment允許組件返回多個根節點,解決了Vue 2中組件必須有一個根節點的問題。在Vue 2中,如果需要在組件模板中渲染多個同級元素,必須用一個額外的包裹元素(如

),這可能會在某些場景下產生不必要的DOM結構。而在Vue 3中,使用Fragment可以直接在模板中編寫多個同級元素,使模板結構更簡潔,同時避免了不必要的DOM元素嵌套帶來的樣式和性能影響。例如:

<template><Fragment><h1>標題</h1><p>段落內容</p></Fragment>
</template>

也可以使用短語法<></>來代替<Fragment></Fragment>

12. Vue 3中的工程化工具Vite是什么?有什么優勢?

Vite是一個快速的前端開發工具。優勢顯著,開發體驗上,它利用原生ES模塊,實現了極快的冷啟動速度,無需等待冗長的打包過程,在開發環境中能即時熱更新(HMR),且更新速度快,幾乎無刷新閃爍。構建方面,使用Rollup進行打包,能有效減小打包體積,對Vue 3項目有很好的支持,通過Tree - shaking等技術優化代碼。同時,它對各種前端框架(如Vue、React等)都有良好的兼容性,配置相對簡單,開箱即用,大大提高了前端開發效率 。

13. Vue 3的響應式系統中ref和reactive有什么區別?

ref用于創建一個包含響應式數據的引用,一般用于基本數據類型(如字符串、數字、布爾等),也可用于對象和數組,但會將其包裝成一個具有value屬性的對象。訪問和修改數據時需要通過.value,在模板中使用時無需.value。例如:

import { ref } from 'vue';
const count = ref(0);
console.log(count.value);
count.value++;

reactive用于創建一個響應式對象,直接返回響應式的對象,適用于對象和數組類型數據,對對象內部屬性的訪問和修改無需特殊操作。例如:

import { reactive } from 'vue';
const state = reactive({ name: '張三', age: 20 });
console.log(state.name);
state.age++;

如果要將一個對象作為響應式數據且需要深度響應式,優先使用reactive;如果是基本數據類型或者需要對對象進行特殊包裝(如保持引用一致性等場景),可使用ref 。

14. 在Vue 3中如何使用TypeScript?

Vue 3對TypeScript提供了更好的支持。首先,創建Vue 3項目時可選擇集成TypeScript的模板。在項目中,可在Vue組件內使用TypeScript編寫代碼。定義組件時,可使用類型注解明確props、data、methods等的類型。例如:

<script lang="ts">
import { defineComponent } from 'vue';
interface Props {message: string;
}
export default defineComponent({props: {message: {type: String,required: true}} as Props,setup(props) {const count = ref(0);const increment = () => {count.value++;};return {count,increment};}
});
</script>

還可利用TypeScript的類型推斷功能,在編寫邏輯時獲得更準確的類型提示,減少類型相關錯誤,提高代碼的可維護性和健壯性 。

15. Vue 3中script setup的實現原理是什么?有什么特點?

script setup本質是setup()函數的語法糖。vue - loader在編譯期間會把script setup內的代碼編譯成setup()函數,把defineExpose()內指定的變量編譯為setup()函數的返回值。特點如下:簡化了組合式API的寫法,屬性和方法無需顯式返回即可在模板中直接使用。引入組件時會自動注冊,無需通過components選項手動注冊。使用defineProps接收父組件傳遞的值,useAttrs獲取屬性,useSlots獲取插槽,defineEmits獲取自定義事件。默認不會對外暴露任何屬性,若有需要可使用defineExpose 。例如:

<script setup lang="ts">
import { defineProps, defineEmits } from 'vue';
const props = defineProps({title: String
});
const emits = defineEmits(['close']);
const handleClose = () => {emits('close');
};
</script>
<template><div>{{ title }}</div><button @click="handleClose">關閉</button>
</template>

這種寫法使代碼更簡潔,提高了開發效率 。

二、120道面試題目錄列表

文章序號vue3面試題120道
1vue3 面試題及詳細答案(01 - 15)
2vue3 面試題及詳細答案(16 - 30)
3vue3 面試題及詳細答案(31 - 45)
4vue3 面試題及詳細答案(46 - 60)
5vue3 面試題及詳細答案(61 - 75)
6vue3 面試題及詳細答案(76 - 90)
7vue3 面試題及詳細答案(91 - 105)
8vue3 面試題及詳細答案(106 - 120)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92651.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92651.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92651.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于 GitLab 實踐敏捷開發

在軟件開發中&#xff0c;**基于 GitLab 實踐敏捷開發**&#xff0c;并建立一套**規范的日常管理流程**&#xff0c;不僅可以提升團隊協作效率&#xff0c;還能確保平臺持續向好迭代、性能穩步提升。以下是一個完整的實踐方案&#xff0c;適用于中小型團隊或中大型項目&#xf…

黑馬點評使用Apifox導入接口測試合集(持續更新、詳細圖解)

目錄 一、前言 二、更新店鋪 三、添加秒殺券 四、秒殺下單和秒殺下單user2 一、前言 本博客將持續更新記錄黑馬點評所有接口測試的導入(學到哪更新到哪)&#xff0c;以此博客為完整導入接口測試的合集。第一次在黑馬點評項目使用Apifox進行接口測試直接先看我前面的博客&a…

MYOJ_10583:CSP初賽題單7:計算機常識綜合練習

更多初賽題單請參見題目整理CSP初賽題目整理題單&#xff0c;謝謝。 注&#xff1a;閱讀此題單時建議先看1~5&#xff0c;再試著自己做。 題目描述 1. [J-2010-6][S-2010-6]提出“存儲程序”的計算機工作原理的是&#xff08; &#xff09;。 A. 克勞德香農 B. 戈登摩爾 C.…

代碼隨想錄day22回溯算法1

文章目錄77. 組合216.組合總和III17. 電話號碼的字母組合77. 組合 題目鏈接 文章講解 class Solution { public:vector<vector<int>> res; // 存儲所有的組合vector<int> path; // 當前正在構建的組合// 回溯算法void solve(int n, int k, int st…

【Android】Popup menu:彈出式菜單

Popup menu&#xff1a;彈出式菜單 PopupMenu&#xff0c;彈出菜單&#xff0c;一個模態形式展示的彈出風格的菜單&#xff0c;綁在在某個View上&#xff0c;一般出現在被綁定的View的下方&#xff08;如果下方有空間&#xff09;。 注意&#xff1a;彈出菜單是在API 11和更高版…

20250724-day21

Main Memory Database System&#xff08;MMDB&#xff09;&#xff1a;基于內存的數據庫系統 File Database&#xff08;FDB&#xff09;&#xff1a;基于文件的數據庫 Netware Database&#xff08;NDB&#xff09;&#xff1a;基于網絡的數據庫 daemon&#xff1a;守護進程 …

API是什么,如何保障API安全?

API&#xff08;應用程序編程接口&#xff09;是什么&#xff1f; API&#xff08;Application Programming Interface&#xff09;是不同軟件系統之間通信的“橋梁”。它定義了應用程序如何請求服務、交換數據或調用功能&#xff0c;無需了解底層實現細節。例如&#xff0c;當…

深度分析Java多線程機制

Java 多線程是掌握高性能、高響應性應用程序開發的關鍵&#xff0c;它涉及到語言特性、JVM 實現、操作系統交互以及并發編程的核心概念。 核心目標&#xff1a; 充分利用現代多核 CPU 的計算能力&#xff0c;提高程序吞吐量&#xff08;單位時間內處理的任務量&#xff09;和響…

Android熱修復實現方案深度分析

熱修復的核心目標是在**不發布新版本、不重新安裝、不重啟應用&#xff08;或僅輕量級重啟&#xff09;**的情況下&#xff0c;修復線上應用的 Bug 或進行小范圍的功能更新&#xff0c;極大地提升用戶體驗和問題響應速度。 一、熱修復的核心原理 無論哪種方案&#xff0c;其核心…

HTML前端顏色漸變動畫完整指南

漸變動畫已經成為現代網頁設計中不可或缺的元素&#xff0c;它們不僅能為網站增添視覺吸引力&#xff0c;還能顯著提升用戶體驗。通過巧妙運用CSS漸變動畫&#xff0c;開發者可以創造出令人印象深刻的動態背景效果&#xff0c;而無需依賴圖片或復雜的腳本。 漸變動畫的魅力所在…

b-up:Enzo_mi:Transformer DETR系列

1.視頻1&#xff1a;self-Attention&#xff5c;自注意力機制 &#xff5c;位置編碼 &#xff5c; 理論 代碼 注意&#xff1a; q-查詢; k-商品標簽&#xff1b; v-值&#xff08;具體商品&#xff09; * 不是指乘法&#xff0c;類似概念 a1:相似度&#xff1b; b1:總分 若想…

算法題(179):單調棧

審題&#xff1a; 本題是單調棧的模板題 補充&#xff1a;單調棧 單調棧中的數據始終保持單調遞增或單調遞減 使用情景&#xff1a;給定一個數組&#xff0c;要求尋找 1.某個數左側&#xff0c;離他最近且值大于他的數 2.某個數左側&#xff0c;離他最近且值小于他的數 3.某個數…

CF每日5題(1500-1600)

545C 貪心 1500 題意&#xff1a;給 n 棵樹在一維數軸上的坐標 xix_ixi? &#xff0c;以及它們的長度 hih_ihi?。現在要你砍倒這些樹&#xff0c;樹可以向左倒也可以向右倒&#xff0c;砍倒的樹不能重合、當然也不能覆蓋其他的樹原來的位置&#xff0c;現在求最大可以砍倒的…

HW藍隊:天眼告警監測分析之Web攻擊

Web攻擊 信息泄露 敏感數據包括但不限于:口令、密鑰、證書、會話標識、License、隱私數據(如短消息的內容)、授權憑據、個人數據(如姓名、住址、電話等)等&#xff0c;在程序文件、配置文件、日志文件、備份文件及數據庫中都有可能包含敏感數據 信息收集方法 漏洞分類 備份文…

大騰智能國產3D CAD軟件正式上架華為云云商店

深圳市大騰信息技術有限公司&#xff08;以下簡稱“大騰智能”&#xff09;與華為云達成深度合作&#xff0c;大騰智能CAD軟件及配套服務通過了華為云在功能適配、安全可用、穩定高效等方面的嚴選商品認證&#xff0c;已正式上架華為云云商店&#xff0c;成為華為云云商店的聯營…

論文復現-windows電腦在pycharm中運行.sh文件

1.更改終端路徑&#xff08;前提&#xff1a;已下載git bash&#xff09;2.授權打開pycharm終端&#xff0c;輸入 chmod x 文件名3.根據當前位置&#xff0c;運行.sh文件

開關電源安全保護電路:浪涌保護、過流保護、過壓保護

開關電源安全保護電路:浪涌保護、過流保護、過壓保護 引言 對于開關電源而言, 安全、可靠性歷來被視為重要的性能之一. 開關電源在電氣技術指標滿足電子設備正常使用要求的條件下, 還要滿足外界或自身電路或負載電路出現故障的情況下也能安全可靠地工作. 為此, 須有多種保護措…

C語言(十)

一、函數概述函數是面向過程編程思想的具體體現&#xff0c;主要作用&#xff1a;降低程序之間的耦合性提高代碼的復用性和可維護性一個完整的 C 程序由**一個或多個程序模塊&#xff08;源文件&#xff09;**組成。為便于開發與調試&#xff0c;通常會將代碼拆分為多個源文件&…

QT項目-仿QQ音樂的音樂播放器(第二節)

目錄 自定義控件&#xff1a; BtForm類中實現 BtForm上的動畫效果 自定義控件&#xff1a; 該控件實際由&#xff1a;圖?、?字、動畫三部分組成。圖?和?字分別?QLabel展?&#xff0c;動畫部分內部實際為4 個QLabel。 ① 將BtForm的geometry的寬度和?度修改為200*35。…

【世紀龍科技】數字課程資源-新能源汽車概論

一、課程介紹本課程為通過項目任務式教學&#xff0c;全面系統的講解了新能源汽車的基礎知識及相關技能&#xff0c;培養和提高學生的動手能力和理論知識的工程應用能力。以典型工作任務帶動知識與技能的學習&#xff0c;采用項目教學培養學生的崗位技能、學習能力和職業素養。…