vue前端面試題——記錄一次面試當中遇到的題(1)

1.v-if和v-show的區別

v-if和v-show都是Vue中用于條件渲染的指令,但它們的實現機制和適用場景有所不同:

v-if是真正的條件渲染,在條件切換時會銷毀和重建DOM元素,適合運行時條件變化不頻繁的場景;

v-show只是通過CSS的display屬性控制顯示/隱藏,元素始終存在于DOM中,適合需要頻繁切換的場景;

從性能角度考慮,頻繁切換時使用v-show,減少DOM操作開銷;條件很少變化時使用v-if,減少初始渲染開銷。

在實際項目中,我會根據具體場景選擇:比如選項卡內容切換用v-show,權限控制顯示/隱藏用v-if。

2.es6新特性:

(1)const 與 let 變量

(2)模板字符串——``

(3)字符串新增的一些方法

includes——查看字符串中是否包含某些字符

(4)箭頭函數

(5)拓展運算符——...

(6)數組新增方法

for of——遍歷數字下標的數組或類數組對象

find —— 會將數組的每一個元素放入到函數中進行迭代處理 將第一個滿足條件的值取出來

findIndex ——會將數組的每一個元素放入到函數中進行迭代處理 將第一個滿足條件的值的鍵取出來

(7)class類

(8)getter 是一種獲得屬性值的方法,setter是一種設置屬性值的方法。

一定注意,他們針對的是類的屬性,并不是方法。

(9)promise——表示一個尚未完成但是最終會完成的操作的對象。主要有三種狀態: pengding: 初始狀態,既不是成功也不是失敗 Fullfilled: 表示操作執行成功 Rejected: 表示操作失敗

promise中的一系列方法: then: 注冊回調函數用于處理promise返回成功的結果 catch: 注冊回調函數用于處理promise失敗的結果 finally: 無論promise執行的結果是成功還是失敗,都會執行finally中的結果

promise還支持鏈式調用,可以連續的調用then,catch和finally promise.all()會等待所有的promise執行完畢后再去執行后續操作,如果有任何一個promise執行失敗都會拒絕并且會在catch中返回第一個被拒絕的原因

(10)Map/Set

Map: 是一種集合類型,可以用于存儲任意類型的鍵值對,與js中的普通的對象不同的是,Map中的鍵可以是任意類型的數據,甚至可以是對象。

Set: set也是一種集合類型,存儲唯一值,它與Map的區別在于Set中不存儲鍵,只存儲值

(11)Symbol 是一種新的原始數據類型,它主要用于創建唯一的鍵名,特別是在對象屬性和某些場景下的標識符上。Symbol 的設計目的是解決一些傳統鍵名(如字符串鍵名)可能帶來的問題,比如鍵名沖突等。多用于給元素創建屬性使用

3.銷毀組件需要用哪個生命周期

在Vue中,組件銷毀時會依次觸發beforeDestroy和destroyed兩個生命周期鉤子。beforeDestroy階段適合執行清理操作,如清除定時器、取消事件監聽等,此時組件實例仍然可用;destroyed階段表示組件已完全銷毀,所有綁定和子實例都已被移除。在Vue 3中它們分別更名為beforeUnmount和unmounted。

?

補充:生命周期

?

(1)vue2生命周期

beforeCreate 組件實例被創建之初,組件的屬性生效之前 created 組件實例已經完全創建,屬性也綁定,但真實 dom 還沒有生成,$el 還不可用 beforeMount 在掛載開始之前被調用:相關的 render 函數首次被調用 mounted el 被新創建的 vm.$el 替換,并掛載到實例上去之后調用該鉤子【可多次調用】 beforeUpdate 組件數據更新之前調用,發生在虛擬 DOM 打補丁之前,即在重新渲染之前進行最后的準備工作 updated 組件數據更新之后,重新渲染完成后。此階段表示Vue實例已經完成了數據更新,并已經重新渲染到DOM beforeDestory 組件銷毀前調用,此階段用于清理工作,如移除事件監聽器或取消定時器。 destoryed 組件銷毀后調用,此階段表示Vue實例已經完全銷毀,所有的事件監聽器和組件實例都已被移除。 activited keep-alive 專屬,組件被激活時調用 deadctivated keep-alive 專屬,組件被銷毀時調用

(2)vue3生命周期

setup() 始創建組件之前,在 beforeCreate 和 created 之前執行,創建的是 data 和 method onBeforeMount() 組件掛載到節點上之前執行的函數 onMounted() : 組件掛載完成后執行的函數 onBeforeUpdate() 組件更新之前執行的函數 onUpdated(): 組件更新完成之后執行的函數 onBeforeUnmount() 組件卸載之前執行的函數 onUnmounted(): 組件卸載完成后執行的函數 onActivated() 被包含在 中的組件,會多出兩個生命周期鉤子函數,被激活時執行; onDeactivated() 比如從 A 組件,切換到 B 組件,A 組件消失時執行; onErrorCaptured() 當捕獲一個來自子孫組件的異常時激活鉤子函數。

(3)uniapp生命周期

1、應用程序的生命周期方法:定義在根組件app.vue中

onLaunch() 應用程序啟動 onShow() 應用程序顯示 onHide() 應用程序隱藏

2、頁面的生命周期方法--仿微信小程序

onLoad() 頁面掛載完成 onShow() 頁面被顯示 onReady() 頁面可以交互 onHide() 頁面被隱藏 onUnload() 頁面被卸載

onPageScroll() 頁面發生滾動 onReachBottom() 頁面滾動觸底 onPullDownRefresh() 頁面下拉刷新

4.在 Vue 模板中循環遍歷數組對象時,如果要安全訪問可能不存在的嵌套屬性(如 child.name)
  1. 使用可選鏈操作符 (?.)(推薦)

    <script setup>
    const items = [{ id: 1, name: '父項1', child: { name: '子項1' } },{ id: 2, name: '父項2' }, // 沒有child{ id: 3, name: '父項3', child: null } // child為null
    ]
    </script>
    ?
    <template><ul><li v-for="item in items" :key="item.id">{{ item.name }} - 子項: {{ item.child?.name || '無子項' }}</li></ul>
    </template>

  2. 使用 v-if 條件判斷

5.vue3當中ref和reactive的區別

"Vue3中ref和reactive都是創建響應式數據的API,但有以下關鍵區別:

ref適用于所有類型,需要通過.value訪問,而reactive僅適用于對象且直接訪問屬性;

ref在模板中自動解包,reactive保持原樣訪問;

ref可以重新賦值整個對象,reactive不能直接替換;

reactive解構會失去響應性,需要用toRefs轉換;

底層實現上ref使用getter/setter,reactive使用Proxy。

實際開發中,基本類型多用ref,復雜對象狀態多用reactive,也可以組合使用。"

6.在Vue中封裝Axios時添加請求頭參數
  1. 全局默認請求頭 - 在創建axios實例時通過defaults.headers設置,適用于所有請求共用的頭信息:

  2. 請求攔截器添加 - 在interceptors.request.use中動態添加,適合需要運行時確定的頭信息如認證token:

  3. 單個請求添加 - 在具體API調用時傳入headers,適用于特殊接口的特殊頭信息:

7.解決 img 標簽與 input 之間的神秘空隙問題

方法 1:修改 img 的 vertical-align

方法 2:設置父元素的 font-size 為 0

方法 3:使用 flex 布局(推薦)

方法 4:浮動布局

方法 5:負 margin 調整(應急方案)

8.Vuex和??Pinia?的區別

Vuex和Pinia都是Vue的狀態管理庫,但Pinia是更現代的解決方案,主要區別在于:

API設計:Pinia采用組合式API風格,比Vuex的選項式API更簡潔

類型支持:Pinia提供一流的TypeScript支持,無需額外配置

模塊系統:Pinia使用扁平化store設計,比Vuex的嵌套模塊更直觀

體積大小:Pinia比Vuex更輕量

架構簡化:Pinia合并了mutations和actions,減少了概念復雜度

9.在微信小程序開發中遇到回調報錯或未收到回調時,怎么解決?

1.先檢查基礎配置

  • 確認小程序后臺的服務器域名配置好了

  • 檢查微信支付/云開發等平臺的回調地址有沒有填錯

  • 測試下網絡是不是通的

2.代碼里加保險

  • 所有回調都加上錯誤處理,比如:

javascript
wx.request({success(){...},fail(){ // 記錄錯誤日志// 嘗試重新發送}
})
  • 重要的操作(比如支付)會在前端做個定時檢查,如果5秒沒收到回調,就主動去查詢狀態

3.服務端做防護

  • 防止重復處理(比如支付成功了但回調了多次)

  • 加個日志系統,記錄每次回調的情況

4.上線后繼續觀察

  • 看監控數據,如果發現某些回調經常失敗,就針對性優化

  • 把常見問題的解決方法整理成文檔,方便團隊參考

10.promise當中then、catch、finally的區別

then: 注冊回調函數用于處理promise返回成功的結果 catch: 注冊回調函數用于處理promise失敗的結果 finally: 無論promise執行的結果是成功還是失敗,都會執行finally中的結果

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

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

相關文章

【QT面試題】(三)

文章目錄 Qt信號槽的優點及缺點Qt中的文件流和數據流區別&#xff1f;Qt中show和exec區別QT多線程使用的方法 (4種)QString與基本數據類型如何轉換&#xff1f;QT保證多線程安全事件與信號的區別connect函數的連接方式&#xff1f;信號與槽的多種用法Qt的事件過濾器有哪些同步和…

Vscode下Go語言環境配置

前言 本文介紹了vscode下Go語言開發環境的快速配置&#xff0c;為新手小白快速上手Go語言提供幫助。 1.下載官方Vscode 這步比較基礎&#xff0c;已經安裝好的同學可以直接快進到第二步 官方安裝包地址&#xff1a;https://code.visualstudio.com/ 雙擊一直點擊下一步即可,記…

HTML 文本省略號

目錄 HTML 文本省略號超行省略號如何實現1. 單行文本溢出顯示省略號2. 多行文本溢出顯示省略號方法一&#xff1a;使用 -webkit-line-clamp&#xff08;推薦&#xff09;方法二&#xff1a;使用偽元素&#xff08;兼容性好&#xff09;方法三&#xff1a;使用 JavaScript 動態監…

Spring Boot 實現流式響應(兼容 2.7.x)

在實際開發中&#xff0c;我們可能會遇到一些流式數據處理的場景&#xff0c;比如接收來自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 內容&#xff0c;并將其原樣中轉給前端頁面或客戶端。這種情況下&#xff0c;傳統的 RestTemplate 緩存機制會…

ffmpeg 新版本轉碼設置幀率上限

ffmpeg 新版本轉碼設置幀率上限 ffmpeg 在老版本比如 4.3的時候&#xff0c;轉碼設置幀率上限是通過vsync控制 # 設置動態控制最大幀率60 "-vsync 2 -r 60" 新版本這個參數沒辦法動態判斷控制幀率了 替換為使用filter中的fps進行設置 # 設置動態幀率最大60幀 -…

Qt繪制電池圖標源碼分享

一、效果展示 二、源碼分享 cell.h #ifndef CELL_WIDGET_H #define CELL_WIDGET_H #include <QWidget> #include <QPainter> #include <QPaintEngine> #include <QPaintEvent>/* 電池控件類 */ class CellWidget : public QWidget {Q_OBJECTQ_PROPERTY…

安卓基礎(生成APK)

??生成調試版&#xff08;Debug&#xff09;?? Build → Build Bundle(s)/APK(s) → Build APK輸出路徑&#xff1a;app/build/outputs/apk/debug/app-debug.apk ??生成發布版&#xff08;Release&#xff09;?? Build → Generate Signed Bundle/APK → 選擇 ??APK?…

如何在 TypeScript 中使用類型保護

前言 類型保護是一種 TypeScript 技術&#xff0c;用于獲取變量類型的信息&#xff0c;通常用于條件塊中。類型保護是返回布爾值的常規函數??&#xff0c;它接受一個類型并告知 TypeScript 是否可以將其縮小到更具體的值。類型保護具有獨特的屬性&#xff0c;可以根據返回的…

山東大學軟件學院項目實訓-基于大模型的模擬面試系統-面試對話標題自動總結

面試對話標題自動總結 主要實現思路&#xff1a;每當AI回復用戶之后&#xff0c;調用方法查看當前對話是否大于三條&#xff0c;如果大于則將用戶的兩條和AI回復的一條對話傳給DeepSeek讓其進行總結&#xff08;后端&#xff09;&#xff0c;總結后調用updateChatTopic進行更新…

Spring Cloud與Alibaba微服務架構全解析

Spring Cloud與Spring Cloud Alibaba微服務架構解析 1. Spring Boot概念 Spring Boot并不是新技術&#xff0c;而是基于Spring框架下“約定優于配置”理念的產物。它幫助開發者更容易、更快速地創建獨立運行和產品級別的基于Spring框架的應用。Spring Boot中并沒有引入新技術…

AI 賦能 Java 開發:從通宵達旦到高效交付的蛻變之路

作為一名深耕 Java 開發領域多年的從業者&#xff0c;相信很多同行都與我有過相似的經歷&#xff1a;在 “996” 甚至 “007” 的高壓模式下&#xff0c;被反復修改的需求、復雜的架構設計、無休止的代碼編寫&#xff0c;以及部署時層出不窮的問題折磨得疲憊不堪。長期以來&…

06. C#入門系列【自定義類型】:從青銅到王者的進階之路

C#入門系列【自定義類型】&#xff1a;從青銅到王者的進階之路 一、引言&#xff1a;為什么需要自定義類型&#xff1f; 在C#的世界里&#xff0c;系統自帶的類型&#xff08;如int、string、bool&#xff09;就像是基礎武器&#xff0c;能解決一些簡單問題。但當你面對復雜的…

使用 PyTorch 和 TensorBoard 實時可視化模型訓練

在這個教程中&#xff0c;我們將使用 PyTorch 訓練一個簡單的多層感知機&#xff08;MLP&#xff09;模型來解決 MNIST 手寫數字分類問題&#xff0c;并且使用 TensorBoard 來可視化訓練過程中的不同信息&#xff0c;如損失、準確度、圖像、參數分布和學習率變化。 步驟 1&…

第十五章 15.OSPF(CCNA)

第十五章 15.OSPF(CCNA) 介紹了大家都能用的OSPF動態路由協議 注釋&#xff1a; 學習資源是B站的CCNA by Sean_Ning CCNA 最新CCNA 200-301 視頻教程(含免費實驗環境&#xff09; PS&#xff1a;喜歡的可以去買下他的課程&#xff0c;不貴&#xff0c;講的很細 To be cont…

手機連接windows遇到的問題及解決方法

文章目錄 寫在前面一、手機與windows 連接以后 無法在win端打開手機屏幕,提示801方法零、檢查連接方法一、系統修復方法二、斷開重連方法三、軟件更新方法四、關閉防火墻 寫在前面 本文主要記錄所遇到的問題以及解決方案&#xff0c;以備后用。 所用機型&#xff1a;win11 專業…

Spring Boot + MyBatis Plus 項目中,entity和 XML 映射文件的查找機制

在 Spring Boot MyBatis - Plus 項目中&#xff0c;entity&#xff08;實體類&#xff09;和 XML 映射文件的查找機制有其默認規則&#xff0c;也可通過配置調整&#xff0c;以下詳細說明&#xff1a; 一、實體類&#xff08;entity&#xff09;的查找 MyBatis - Plus 能找到…

itvbox綠豆影視tvbox手機版影視APP源碼分享搭建教程

我們先來看看今天的主題&#xff0c;tvbox手機版&#xff0c;然后再看看如何搭建&#xff1a; 很多愛好者都希望搭建自己的影視平臺&#xff0c;那該如何搭建呢&#xff1f; 后端開發環境&#xff1a; 1.易如意后臺管理優化版源碼&#xff1b; 2.寶塔面板&#xff1b; 3.ph…

Vue Electron 使用來給若依系統打包成exe程序,出現登錄成功但是不跳轉頁面(已解決)

描述 用vue打成electron可執行exe程序時&#xff0c;發現個問題&#xff0c;一直登錄之后&#xff0c;頁面跳轉不了&#xff0c;其實后臺請求已成功發送 那么懷疑就是vue頁面跳轉的事情 解決 大部分vue 前段項目 會使用 js-cookie 這個庫 來操作瀏覽器的cookie 然而這個庫 …

Blob設置type為application/msword將document DOM節點轉換為Word(.doc,.docx),并下載到本地

core code // 導出為Word文檔downloadWord({ dom, fileName "", fileType "doc", l {} } {}) {l.show && l.show();// 獲取HTML內容const content dom.innerHTML;// 構建Word文檔的HTML結構const html <!DOCTYPE html><html>&l…

無需 Mac,使用Appuploader簡化iOS上架流程

作為開發者&#xff0c;尤其是從事跨平臺開發的團隊&#xff0c;iOS應用上架一直是一項繁瑣且挑戰重重的工作。盡管Flutter、React Native等框架使得我們可以在不同平臺之間共享代碼&#xff0c;iOS上架仍然是一個不可忽視的難題。因為它不僅僅涉及代碼構建&#xff0c;還涉及到…