国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

常見(jiàn)前端面試之VUE面試題匯總十三

這篇具有很好參考價(jià)值的文章主要介紹了常見(jiàn)前端面試之VUE面試題匯總十三。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

常見(jiàn)前端面試之VUE面試題匯總十三,前端開(kāi)發(fā),vue.js,前端,javascript,職場(chǎng)和發(fā)展,開(kāi)發(fā)語(yǔ)言,面試,前端框架

?39. Vue 中 key 的作用

vue 中 key 值的作用可以分為兩種情況來(lái)考慮:

第一種情況是 v-if 中使用 key。由于 Vue 會(huì)盡可能高效地渲染元 素,通常會(huì)復(fù)用已有元素而不是從頭開(kāi)始渲染。因此當(dāng)使用 v-if 來(lái) 實(shí)現(xiàn)元素切換的時(shí)候,如果切換前后含有相同類(lèi)型的元素,那么這個(gè) 元素就會(huì)被復(fù)用。如果是相同的 input 元素,那么切換前后用戶的 輸入不會(huì)被清除掉,這樣是不符合需求的。因此可以通過(guò)使用 key 來(lái) 唯一的標(biāo)識(shí)一個(gè)元素,這個(gè)情況下,使用 key 的元素不會(huì)被復(fù)用。這個(gè)時(shí)候 key 的作用是用來(lái)標(biāo)識(shí)一個(gè)獨(dú)立的元素。

第二種情況是 v-for 中使用 key。用 v-for 更新已渲染過(guò)的元素列 表時(shí),它默認(rèn)使用“就地復(fù)用”的策略。如果數(shù)據(jù)項(xiàng)的順序發(fā)生了改 變,Vue 不會(huì)移動(dòng) DOM 元素來(lái)匹配數(shù)據(jù)項(xiàng)的順序,而是簡(jiǎn)單復(fù)用此 處的每個(gè)元素。因此通過(guò)為每個(gè)列表項(xiàng)提供一個(gè) key 值,來(lái)以便 Vue 跟蹤元素的身份,從而高效的實(shí)現(xiàn)復(fù)用。這個(gè)時(shí)候 key 的作用是為 了高效的更新渲染虛擬 DOM。

key 是為 Vue 中 vnode 的唯一標(biāo)記,通過(guò)這個(gè) key,diff 操作可 以更準(zhǔn)確、更快速

更準(zhǔn)確:因?yàn)閹?key 就不是就地復(fù)用了,在 sameNode 函數(shù) a.key === b.key 對(duì)比中可以避免就地復(fù)用的情況。所以會(huì)更加準(zhǔn)確。

更快速:利用 key 的唯一性生成 map 對(duì)象來(lái)獲取對(duì)應(yīng)節(jié)點(diǎn),比遍歷 方式更快

40.如何從真實(shí)DOM到虛擬DOM

涉及到Vue中的模板編譯原理,主要過(guò)程:

  1. 將模板轉(zhuǎn)換成?ast?樹(shù),?ast?用對(duì)象來(lái)描述真實(shí)的JS語(yǔ)法(將真實(shí)DOM轉(zhuǎn)換成虛擬DOM)
  2. 優(yōu)化樹(shù)
  3. 將?ast?樹(shù)生成代碼

41.為什么Vue采用異步渲染呢?

Vue 是組件級(jí)更新,如果不采用異步更新,那么每次更新數(shù)據(jù)都會(huì)對(duì)當(dāng)前組件進(jìn)行重新渲染,所以為了性能, Vue 會(huì)在本輪數(shù)據(jù)更新后,在異步更新視圖。核心思想 nextTick 。

dep.notify() 通知 watcher進(jìn)行更新, subs[i].update 依次調(diào)用 watcher 的 update , queueWatcher 將watcher 去重放入隊(duì)列, nextTick( flushSchedulerQueue )在下一tick中刷新watcher隊(duì)列(異步)。

42.為什么vue組件中data必須是一個(gè)函數(shù)?

對(duì)象為引用類(lèi)型,當(dāng)復(fù)用組件時(shí),由于數(shù)據(jù)對(duì)象都指向同一個(gè)data對(duì)象,當(dāng)在一個(gè)組件中修改data時(shí),其他重用的組件中的data會(huì)同時(shí)被修改;而使用返回對(duì)象的函數(shù),由于每次返回的都是一個(gè)新對(duì)象(Object的實(shí)例),引用地址不同,則不會(huì)出現(xiàn)這個(gè)問(wèn)題。

43.Vue-router 導(dǎo)航守衛(wèi)有哪些

  • 全局前置/鉤子:beforeEach、beforeResolve、afterEach
  • 路由獨(dú)享的守衛(wèi):beforeEnter
  • 組件內(nèi)的守衛(wèi):beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave

44.Vue 為什么要用 vm.$set() 解決對(duì)象新增屬性不能響應(yīng)的問(wèn)題 ?你能說(shuō)說(shuō)如下代碼的實(shí)現(xiàn)原理么?

1)Vue為什么要用vm.$set() 解決對(duì)象新增屬性不能響應(yīng)的問(wèn)題

  1. Vue使用了Object.defineProperty實(shí)現(xiàn)雙向數(shù)據(jù)綁定
  2. 在初始化實(shí)例時(shí)對(duì)屬性執(zhí)行 getter/setter 轉(zhuǎn)化
  3. 屬性必須在data對(duì)象上存在才能讓Vue將它轉(zhuǎn)換為響應(yīng)式的(這也就造成了Vue無(wú)法檢測(cè)到對(duì)象屬性的添加或刪除)

所以Vue提供了Vue.set (object, propertyName, value) / vm.$set (object, propertyName, value)

2)接下來(lái)我們看看框架本身是如何實(shí)現(xiàn)的呢?

Vue 源碼位置:vue/src/core/instance/index.js
export function set (target: Array<any> | Object, key: any, val: any): any {
  // target 為數(shù)組  
  if (Array.isArray(target) && isValidArrayIndex(key)) {
    // 修改數(shù)組的長(zhǎng)度, 避免索引>數(shù)組長(zhǎng)度導(dǎo)致splcie()執(zhí)行有誤
    target.length = Math.max(target.length, key)
    // 利用數(shù)組的splice變異方法觸發(fā)響應(yīng)式  
    target.splice(key, 1, val)
    return val
  }
  // key 已經(jīng)存在,直接修改屬性值  
  if (key in target && !(key in Object.prototype)) {
    target[key] = val
    return val
  }
  const ob = (target: any).__ob__
  // target 本身就不是響應(yīng)式數(shù)據(jù), 直接賦值
  if (!ob) {
    target[key] = val
    return val
  }
  // 對(duì)屬性進(jìn)行響應(yīng)式處理
  defineReactive(ob.value, key, val)
  ob.dep.notify()
  return val
}

我們閱讀以上源碼可知,vm.$set 的實(shí)現(xiàn)原理是:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-685422.html

  1. 如果目標(biāo)是數(shù)組,直接使用數(shù)組的 splice 方法觸發(fā)相應(yīng)式;
  2. 如果目標(biāo)是對(duì)象,會(huì)先判讀屬性是否存在、對(duì)象是否是響應(yīng)式,
  3. 最終如果要對(duì)屬性進(jìn)行響應(yīng)式處理,則是通過(guò)調(diào)用 defineReactive 方法進(jìn)行響應(yīng)式處理
defineReactive 方法就是 Vue 在初始化對(duì)象時(shí),給對(duì)象屬性采用 Object.defineProperty 動(dòng)態(tài)添加 getter 和 setter 的功能所調(diào)用的方法

到了這里,關(guān)于常見(jiàn)前端面試之VUE面試題匯總十三的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端HTML、CSS、JS、VUE3 匯總

    前端HTML、CSS、JS、VUE3 匯總

    學(xué)習(xí)https://developer.mozilla.org/zh-CN/docs/Learn/CSS 提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動(dòng)添加 使用VS Code運(yùn)行前端代碼 在VS Code上安裝前端插件 正在更新中~ ? 提示:這里可以添加本文要記錄的大概內(nèi)容: 學(xué)習(xí)路線 知識(shí)定位 HTML基礎(chǔ) 標(biāo)簽、表格、表單、

    2024年02月13日
    瀏覽(69)
  • ChatGPT給出的前端面試考點(diǎn)(Vue.js)

    ChatGPT給出的前端面試考點(diǎn)(Vue.js)

    答案 1. Vue.js是什么?它的主要特點(diǎn)是什么? Vue.js是一個(gè)漸進(jìn)式JavaScript框架,用于構(gòu)建用戶界面。它的主要特點(diǎn)包括: 數(shù)據(jù)綁定:Vue.js使用雙向數(shù)據(jù)綁定,即視圖會(huì)自動(dòng)更新以匹配數(shù)據(jù)的變化,反之亦然。 組件化:通過(guò)組件化的方法可以構(gòu)建可重用的視圖組件。 輕量級(jí):

    2024年01月20日
    瀏覽(54)
  • 前端vue常見(jiàn)60道面試題 重點(diǎn)簡(jiǎn)潔?。?!【未完,文章持續(xù)更新中......】

    model 代表數(shù)據(jù)模型,數(shù)據(jù)和業(yè)務(wù)邏輯都在 model 層中定義 view 代表視圖,負(fù)責(zé)數(shù)據(jù)展示 view model 代表與界面對(duì)應(yīng)的 model MVVM 是 MVC 的變種進(jìn)階,在概念上真正將頁(yè)面與數(shù)據(jù)邏輯分離的模式,把數(shù)據(jù)綁定放到一個(gè) js 中去實(shí)現(xiàn),這個(gè) js 文件主要功能是完成數(shù)據(jù)的雙向綁定,把 mod

    2024年02月06日
    瀏覽(21)
  • 2023年最新前端面試題匯總大全二(含答案超詳細(xì),Vue,TypeScript,React,微信小程序,Webpack 匯總篇)-- 持續(xù)更新

    2023年最新前端面試題匯總大全二(含答案超詳細(xì),Vue,TypeScript,React,微信小程序,Webpack 匯總篇)-- 持續(xù)更新

    HTML篇 CSS篇 JS篇 Vue篇 TpeScript篇 React篇 微信小程序篇 前端面試題匯總大全(含答案超詳細(xì),HTML,JS,CSS匯總篇)-- 持續(xù)更新 1. 談?wù)勀銓?duì)MVVM開(kāi)發(fā)模式的理解? MVVM是一種簡(jiǎn)化用戶界面的 實(shí)踐驅(qū)動(dòng)編程方式 。在當(dāng)前主流的前后端分離的開(kāi)發(fā)模式中,MVVM模式的優(yōu)越性日益體現(xiàn),相較

    2024年02月10日
    瀏覽(42)
  • 從javascript到vue再到react:前端開(kāi)發(fā)框架的演變

    從javascript到vue再到react:前端開(kāi)發(fā)框架的演變

    目錄 JavaScript: 動(dòng)態(tài)語(yǔ)言的基礎(chǔ) JavaScript:Web開(kāi)發(fā)的起點(diǎn) Vue.js: 漸進(jìn)式框架的興起 Vue.js:簡(jiǎn)潔、高效的前端框架 React.js: 聲明式UI的革新 React.js:強(qiáng)大、靈活的前端框架 演變之路與未來(lái)展望 演變過(guò)程 當(dāng)提到前端開(kāi)發(fā)中的框架時(shí),JavaScript、Vue.js和React.js是三個(gè)最常見(jiàn)的名詞。它

    2024年02月07日
    瀏覽(34)
  • 前端開(kāi)發(fā) 5: Vue.js 框架

    在前端開(kāi)發(fā)中,Vue.js 是一個(gè)流行且靈活的 JavaScript 框架,用于構(gòu)建用戶界面。它采用了組件化的開(kāi)發(fā)方式,使得前端開(kāi)發(fā)更加模塊化和可維護(hù)。在本篇博客中,我將為你介紹 Vue.js 的基礎(chǔ)知識(shí)和常用技巧,幫助你更好地掌握前端開(kāi)發(fā)中的框架部分。 Vue.js 是一個(gè)輕量級(jí)的 Jav

    2024年01月19日
    瀏覽(27)
  • Vue.js 現(xiàn)代前端開(kāi)發(fā)的利器

    作者:阿發(fā)家的阿花 在當(dāng)今的前端開(kāi)發(fā)領(lǐng)域,Vue.js已經(jīng)成為最受歡迎的JavaScript框架之一。它的簡(jiǎn)潔性、靈活性和強(qiáng)大的功能使其成為許多開(kāi)發(fā)者首選的工具。本文將介紹Vue.js的核心概念、主要特點(diǎn)以及為什么它在現(xiàn)代前端開(kāi)發(fā)中如此重要。我們還將探討Vue.js在構(gòu)建交互式和

    2024年02月10日
    瀏覽(27)
  • 《Vue.js前端開(kāi)發(fā)實(shí)戰(zhàn)》課后習(xí)題答案

    《Vue.js前端開(kāi)發(fā)實(shí)戰(zhàn)》課后習(xí)題答案

    本答案僅供參考,禁止用于抄襲等不法用途 一、 填空題 用戶界面 ViewModel refs vue-devtools 組件 二、 判斷題 對(duì) 對(duì) 對(duì) 對(duì) 對(duì) 三、 選擇題 D C D A A 四、 簡(jiǎn)答題 請(qǐng)簡(jiǎn)述什么是Vue。 Vue(讀音/Vju?/,類(lèi)似于View)是一套用于構(gòu)建用戶界面的漸進(jìn)式框架,與其他大型框架相比,Vue被設(shè)計(jì)

    2024年02月03日
    瀏覽(27)
  • 持續(xù)不斷更新中... 自己整理的一些前端知識(shí)點(diǎn)以及前端面試題,包括vue2,vue3,js,ts,css,微信小程序等

    答: 在普通的前端項(xiàng)目工程中,在script標(biāo)簽中增加setup即可使用api 使用setup()鉤子函數(shù) 答: 不要在計(jì)算屬性中進(jìn)行異步請(qǐng)求或者更改DOM 不要直接修改computed的值 區(qū)別: 計(jì)算屬性值基于其響應(yīng)式依賴(lài)被緩存,意思就是只要他之前的依賴(lài)不發(fā)生變化,那么調(diào)用他只會(huì)返回之前緩

    2024年02月11日
    瀏覽(58)
  • 前端面試:常見(jiàn)的HTML、CSS和JavaScript問(wèn)題解答

    前端開(kāi)發(fā)面試中,HTML、CSS和JavaScript是必考點(diǎn)。以下是常見(jiàn)的HTML、CSS和JavaScript問(wèn)題的解答,希望能對(duì)前端開(kāi)發(fā)者的面試有所幫助。 文檔類(lèi)型(doctype)的作用是什么? 文檔類(lèi)型用來(lái)告訴瀏覽器當(dāng)前頁(yè)面使用哪種HTML標(biāo)準(zhǔn)進(jìn)行渲染。不同的HTML標(biāo)準(zhǔn)支持的標(biāo)簽和屬性有所差異,因

    2024年02月08日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包