前端開發面試題總結-vue3框架篇(一)

文章目錄

  • Vue3高頻問答
    • 一、vue2/vue3中常用的構建工具和腳手架分別是什么? 有什么區別?
    • 二、請說一說vue2和vue3的區別?
    • 三、請說一說vue2和vue3響應式原理的區別?
    • 四、vue3 如何定義響應式數據?
    • 五、說一說你對vue3中的setup函數?
    • 六、說一說vue3中的路由和vue2中的區別?

Vue3高頻問答

一、vue2/vue3中常用的構建工具和腳手架分別是什么? 有什么區別?

● vue2中常用的構建工具和腳手架: webpack + vue-cli
● vue3中常用的構建工具和腳手架: vite + create-vue

webpack和vite的區別
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
總結起來:
Webpack是?個功能強?且靈活的靜態模塊打包?具,適?于?型復雜項?,但構建速度較慢。
Vite是?種基于原?ES模塊的開發?具,提供了快速的開發體驗和較快的構建速度, 適?于中?型項?和快速原型開發。在選擇使?時,可以根據項?需求和特點進?評估和選擇。

追問1: 何為插件(Plugin)?
專注處理在編譯過程中的某個特定的任務的功能模塊,可以稱為插件。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

二、請說一說vue2和vue3的區別?

  1. 響應式原理
    ● Vue2:通過 Object.defineProperty 劫持對象屬性的 getter/setter,無法直接監聽新增屬性和數組下標變化(需用 Vue.set)。
    ● Vue3:改用 Proxy 代理整個對象,完美監聽所有屬性(包括新增/刪除)和數組變化,性能更好且代碼更簡潔。
  2. 代碼組織方式
    ● Vue2(Options API):邏輯分散在 data、methods、computed 等選項中,復雜組件代碼難維護。
    ● Vue3(Composition API):用 setup 函數集中組織邏輯,類似 React Hooks,相同功能代碼可聚合,復用性更強(自定義 Hook)。
  3. 性能優化
    ● 虛擬 DOM 優化:Vue3 編譯時標記靜態節點,跳過比對(靜態提升),減少渲染開銷。
    ● Tree-shaking:按需引入 API,打包體積更小(如未用 v-model 則不打包相關代碼)。
  4. 新特性
    ● Fragment:支持組件多根節點(Vue2 必須單根)。
    ● Teleport:將組件渲染到任意 DOM 位置(如彈窗)。
    ● Suspense:異步組件加載狀態管理(類似 React)。
  5. TypeScript 支持
    ● Vue3 源碼用 TypeScript 重寫,提供完整類型推導,開發體驗更友好。
  6. 生命周期變化
    ● beforeCreate 和 created 被 setup 替代,其他鉤子名前加 on(如 onMounted)。
    總結:
    Vue3 核心升級在 響應式(Proxy)、代碼組織(Composition API) 和 性能優化,同時引入新特性(Fragment/Teleport)和更好 TypeScript 支持,適合復雜項目開發。

三、請說一說vue2和vue3響應式原理的區別?

一、底層實現機制

  1. Vue2:基于 Object.defineProperty
    ○ 數據劫持:通過遞歸遍歷對象屬性,為每個屬性添加 getter/setter 監聽數據變化。
    ○ 局限性:
    ■ 無法檢測對象新增/刪除屬性(需用 Vue.set/Vue.delete)。
    ■ 數組需重寫方法(如 push、splice)才能觸發更新。
  2. Vue3:基于 Proxy
    ○ 代理整個對象:通過 Proxy 攔截對象的任意操作(包括屬性增刪、數組索引修改)。
    ○ 按需響應:僅在屬性被訪問時遞歸代理深層對象(性能更優)。
    二、性能優化
  3. 依賴收集:
    ○ Vue2:初始化時遞歸遍歷所有屬性,全量劫持,性能消耗大。
    ○ Vue3:通過 Proxy 懶代理,僅在屬性被訪問時建立依賴,減少遞歸開銷。
  4. 數組處理:
    ○ Vue2:需重寫7種數組方法(如 push、pop),無法直接通過索引修改。
    ○ Vue3:直接通過索引修改或修改數組長度(arr[0] = 1)即可觸發響應。
    三、功能擴展
  5. 動態屬性支持:
    ○ Vue2:新增屬性需手動調用 Vue.set,否則無法響應。
    ○ Vue3:支持動態增刪屬性(obj.newProp = value),無需額外API。
  6. API 設計:
    ○ Vue3引入 ref 和 reactive:
    ■ ref 處理基本類型(如 number、string),通過 .value 訪問。
    ■ reactive 代理對象,支持深層嵌套屬性響應。

在這里插入圖片描述

面試高頻追問:為什么Vue3改用Proxy?
○ 解決Vue2無法監聽動態屬性/數組索引的問題,且減少遞歸性能損耗。
2. Vue3的響應式API如何選擇(ref vs reactive)?
○ 基本類型用 ref,對象/數組用 reactive;ref 內部通過 reactive 包裝對象實現。
3. Vue3如何優化依賴收集?
○ 通過 WeakMap 建立三級依賴關系(對象→屬性→副作用),實現精準更新。

四、vue3 如何定義響應式數據?

Vue3 通過 ref 和 reactive 定義響應式數據:
1.ref:處理基本類型(如 string/number),通過 .value 讀寫。

const count = ref(0);
count.value++; 

2.reactive:處理對象/數組,直接訪問屬性。

const state = reactive({ name: 'Vue' });
state.name = 'Vue3'; 

3.解構保持響應性:用 toRefs 解構 reactive 對象:

const { name } = toRefs(state);

ref和reactive的區別?
● ref:支持所有類型,通過 .value 操作數據(基本類型直接響應,對象內部自動轉 reactive)。
● reactive:僅支持對象/數組,直接操作屬性。
● ref:必須通過 .value 讀寫數據。reactive:直接訪問屬性。
● reactive 對象解構會丟失響應性,需用 toRefs 包裹, ref 解構后仍需通過 .value 操作。
建議:
● 簡單值用 ref,復雜對象用 reactive;
● 需要靈活傳遞響應性變量時,優先 ref(如組合式函數返回值)。

五、說一說你對vue3中的setup函數?

● setup 是 Vue3 組合式 API 的入口函數,替代 Vue2 的 data/methods/生命周期 等選項,集中定義響應式數據、方法、邏輯。
● 在組件實例創建前執行,早于 beforeCreate 生命周期,此時無法訪問 this。
●在實際開發中都是用setup語法糖

六、說一說vue3中的路由和vue2中的區別?

● 路由實例創建方式
○ Vue2:通過 new VueRouter({ mode: ‘history’, routes }) 創建
○ Vue3:使用 createRouter + 明確的路由模式函數(如 createWebHistory)
● 路由 API 的 Composition 支持
○ Vue3:在 setup 中使用 useRouter/useRoute 替代 this. r o u t e r  /  t h i s . router/this. router/this.route
○ Vue2:通過組件實例的 this 訪問路由對象
● 導航守衛的 next 行為變更
○ Vue2:必須顯式調用 next() 控制跳轉
○ Vue3:next 變為可選,可通過返回值控制
● 路由匹配規則調整
○ Vue3:廢棄  通配符,改用 /:pathMatch(.)* 捕獲 404 路由4
● 移除的 API
○ 廢棄 router.app(改用 router.currentRoute.value 獲取當前路由);
○ 移除 router.match 方法;
○ 部分過渡類名變更(如 .router-link-active 保留,但行為微調)。

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

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

相關文章

【LLM06---相對位置編碼】

文章目錄 相對位置編碼經典式XLNET式T5式DeBERTa式 相對位置編碼 上一節我們介紹了絕對位置編碼,這一節我們來看相對位置編碼,也就是用相對位置信息來表示,之前每一個token的位置式通過一個絕對的位置向量來表示的,現在我們在計算…

純跟蹤算法本質解密:航向角偏差=預瞄角?數學證明與工程實踐

定義關鍵問題 在深入純跟蹤算法核心前,必須澄清一對容易被混淆但至關重要的概念: 概念坐標系物理意義計算方式航向角偏差(α_global)全局坐標系車輛航向與預瞄點方向的夾角預瞄點方位角 - 車輛航向角預瞄角(α_body)車身坐標系預瞄點相對于車輛縱軸的夾…

自動駕駛叉車在倉庫環境中是否安全?

隨著自動駕駛叉車的興起,倉庫運營持續演進。叉車自動化技術的引入使倉庫設施變得更快、更安全且更具成本效益。然而一個關鍵問題依然存在:它們在繁忙的倉庫環境中是否安全? 一 、什么是自動駕駛叉車? 自動駕駛叉車,也…

Neo4j操作指南:修改節點數據與新增節點屬性

Neo4j操作指南:修改節點數據與新增節點屬性 引言 Neo4j作為領先的圖數據庫,提供了靈活的數據操作方式。在實際應用中,我們經常需要修改已有節點的數據或為節點添加新屬性。本文將詳細介紹如何使用Cypher查詢語言在Neo4j中完成這些操作&…

AI大模型學習之基礎數學:微積分在AI大模型中的核心-梯度與優化(梯度下降)詳解

微積分在AI大模型中的核心:梯度與優化(梯度下降) 人工智能(AI)大模型的訓練和優化依賴于數學基礎,其中微積分、線性代數和概率統計構成了其理論核心。微積分在AI中的核心作用在于提供優化工具,尤其是通過梯度和梯度下降方法,幫助模型在高維參數空間中找到損失函數的最…

記錄tweenjs踩坑

初次上手tweenjs&#xff0c;試了很多示例代碼都不生效&#xff0c;結果在html中生效&#xff0c;在vue3的項目中怎么都不生效 <!DOCTYPE html> <html lang"en"><head><title>Tween.js / simplest possible example!</title><meta…

PINA開源程序用于高級建模的 Physics-Informed 神經網絡

?一、軟件介紹 文末提供程序和源碼下載 PINA 是一個開源 Python 庫&#xff0c;旨在簡化和加速科學機器學習 &#xff08;SciML&#xff09; 解決方案的開發。PINA 基于 PyTorch、PyTorch Lightning 和 PyTorch Geometry 構建&#xff0c;提供了一個直觀的框架&#xff0c;用…

一種對外IP/MAC地址收斂的軟硬件系統

----------原創不易&#xff0c;歡迎點贊收藏。廣交嵌入式開發的朋友&#xff0c;討論技術和產品------------- 今天發一篇五年前的文章&#xff0c;不調單板。對以太網和交換片的較多理解&#xff0c;對系統級的優化。 大部分的網絡設備&#xff0c;都由多種單板組成&#x…

【flink】 flink 讀取debezium-json數據獲取數據操作類型op/rowkind方法

flink 讀取debezium-json數據獲取數據操作類型op/rowkind方法。 op類型有c&#xff08;create&#xff09;,u&#xff08;update&#xff09;,d&#xff08;delete&#xff09; 參考官網案例&#xff1a;此處的"op": "u",就是操作類型。 {"before&qu…

某手游cocos2dlua反編譯

一、獲取加載的luac文件 通過frida hook libccos2dlua.so 的luaL_loadbuffer函數對luac進行dump js代碼如下&#xff0c;得到dump后的lua文件 // 要加載的目標庫名 var targetLibrary "libcocos2dlua.so"; var dlopen Module.findExportByName(null, "dlope…

`toRaw` 與 `markRaw`:Vue3 響應式系統的細粒度控制

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

Python文件遷移之Shutil庫詳解

Shutil是一個Python內置的用來高效處理文件和目錄遷移任務的庫。Shutil不僅支持基本的文件復制、移動和刪除操作&#xff0c;還具備處理大文件、批量遷移目錄、以及跨平臺兼容性等特性。通過使用Shutil&#xff0c;我們可以更加輕松地實現文件系統的管理和維護&#xff0c;本文…

【服務器R環境架構】基于 micromamba下載 R 庫包

目錄 準備工作&#xff1a;下載并安裝R環境下載并安裝R環境方式1&#xff1a;下載 .tar.bz2 壓縮包進行解壓執行&#xff08;官方推薦&#xff09;方式2&#xff1a; 創建并激活R環境 下載R庫包安裝CRAN包在 micromamba 中安裝 GitHub 包&#xff08;如 BPST&#xff09; 參考 …

基于 Apache POI 實現的 Word 操作工具類

基于 Apache POI 實現的 Word 操作工具類 這個工具類是讓 AI 寫的&#xff0c;已覆蓋常用功能。 如不滿足場景的可以讓 AI 繼續加功能。 已包含的功能&#xff1a; 文本相關&#xff1a; 添加文本、 設置字體顏色、 設置字體大小、 設置對齊方式、 設置字符間距、 設置字體加粗…

時間序列預測、分類 | 圖神經網絡開源代碼分享(上)

本期結合《時間序列圖神經網絡(GNN4TS)綜述》&#xff0c;整理了關于圖神經網絡在時間序列預測、分類等任務上的開源代碼和學習資料以供大家學習、研究。 參考論文&#xff1a;《A Survey on Graph Neural Networks for Time Series: Forecasting, Classification, Imputation,…

Vue 添加水印(防篡改: 刪除水印元素節點、修改水印元素的樣式)

MutationObserver_API: 觀察某一個元素的變化// index.vue<template><div class="container"><Watermark text="版權所有" style="background: #28c848"><!-- 可給圖片、視頻、div...添加水印 --><div class=&quo…

如何處理開發不認可測試發現的問題

解決方案 第一步&#xff1a;收集確鑿證據 確保有完整的復現結果準備詳細的記錄材料&#xff1a; 截屏錄屏操作步驟記錄 帶著這些證據與開發人員進行溝通 第二步&#xff1a;多角度驗證 如果與開發人員溝通無果&#xff1a; 競品分析&#xff1a;查看市場上同類產品如何…

linux生產環境下根據關鍵字搜索指定日志文件命令

grep -C 100 "error" server.log 用于在 server.log 文件中查找包含 “error” 的行&#xff0c;并同時顯示該行前后100行的上下文。這是排查日志問題的常用技巧&#xff0c;解釋一下&#xff1a; 命令參數詳解 grep&#xff1a;文本搜索工具&#xff0c;用于在文件…

用vue和echarts怎么寫一個甘特圖,并且是分段式瀑布流

vue echarts 甘特圖功能 index.vue <template><div ref"echart" id"echart" class"echart"></div> </template><script setup>import { nextTick, onMounted, ref } from "vue";import * as echarts f…

Pandas使用教程:從入門到實戰的數據分析利器

一、Pandas基礎入門 1.1 什么是Pandas Pandas是Python生態中核心的數據分析庫&#xff0c;提供高效的數據結構&#xff08;Series/DataFrame&#xff09;和數據分析工具。其名稱源于"Panel Data"&#xff08;面板數據&#xff09;和"Python Data Analysis"…