面試官:Vue常用的修飾符有哪些?有什麼應用場景?

2021-02-13 Vue中文社區

一、修飾符是什麼

在程序世界裡,修飾符是用於限定類型以及類型成員的聲明的一種符號

在Vue中,修飾符處理了許多DOM事件的細節,讓我們不再需要花大量的時間去處理這些煩惱的事情,而能有更多的精力專注於程序的邏輯處理

vue中修飾符分為以下五種:

二、修飾符的作用表單修飾符

在我們填寫表單的時候用得最多的是input標籤,指令用得最多的是v-model

關於表單的修飾符有如下:

lazy

在我們填完信息,光標離開標籤的時候,才會將值賦予給value,也就是在change事件之後再進行信息同步

<input type="text" v-model.lazy="value">
<p>{{value}}</p>

trim

自動過濾用戶輸入的首空格字符,而中間的空格不會過濾

<input type="text" v-model.trim="value">

number

自動將用戶的輸入值轉為數值類型,但如果這個值無法被parseFloat解析,則會返回原來的值

<input v-model.number="age" type="number">

事件修飾符

事件修飾符是對事件捕獲以及目標進行了處理,有如下修飾符:

stop

阻止了事件冒泡,相當於調用了event.stopPropagation方法

<div @click="shout(2)">
  <button @click.stop="shout(1)">ok</button>
</div>
//只輸出1

prevent

阻止了事件的默認行為,相當於調用了event.preventDefault方法

<form v-on:submit.prevent="onSubmit"></form>

self

只當在 event.target 是當前元素自身時觸發處理函數

<div v-on:click.self="doThat">...</div>

使用修飾符時,順序很重要;相應的代碼會以同樣的順序產生。因此,用 v-on:click.prevent.self 會阻止所有的點擊,而 v-on:click.self.prevent 只會阻止對元素自身的點擊

once

綁定了事件以後只能觸發一次,第二次就不會觸發

<button @click.once="shout(1)">ok</button>

capture

使事件觸發從包含這個元素的頂層開始往下觸發

<div @click.capture="shout(1)">
    obj1
<div @click.capture="shout(2)">
    obj2
<div @click="shout(3)">
    obj3
<div @click="shout(4)">
    obj4
</div>
</div>
</div>
</div>
// 輸出結構: 1 2 4 3 

passive

在移動端,當我們在監聽元素滾動事件的時候,會一直觸發onscroll事件會讓我們的網頁變卡,因此我們使用這個修飾符的時候,相當於給onscroll事件整了一個.lazy修飾符

<!-- 滾動事件的默認行為 (即滾動行為) 將會立即觸發 -->
<!-- 而不會等待 `onScroll` 完成  -->
<!-- 這其中包含 `event.preventDefault()` 的情況 -->
<div v-on:scroll.passive="onScroll">...</div>

不要把 .passive 和 .prevent 一起使用,因為 .prevent 將會被忽略,同時瀏覽器可能會向你展示一個警告。

passive 會告訴瀏覽器你不想阻止事件的默認行為

native

讓組件變成像html內置標籤那樣監聽根元素的原生事件,否則組件上使用 v-on 只會監聽自定義事件

<my-component v-on:click.native="doSomething"></my-component>

使用.native修飾符來操作普通HTML標籤是會令事件失效的

滑鼠按鈕修飾符

滑鼠按鈕修飾符針對的就是左鍵、右鍵、中鍵點擊,有如下:

<button @click.left="shout(1)">ok</button>
<button @click.right="shout(1)">ok</button>
<button @click.middle="shout(1)">ok</button>

鍵盤修飾符

鍵盤修飾符是用來修飾鍵盤事件(onkeyup,onkeydown)的,有如下:

keyCode存在很多,但vue為我們提供了別名,分為以下兩種:

普通鍵(enter、tab、delete、space、esc、up...)系統修飾鍵(ctrl、alt、meta、shift...)
// 只有按鍵為keyCode的時候才觸發
<input type="text" @keyup.keyCode="shout()">

還可以通過以下方式自定義一些全局的鍵盤碼別名

Vue.config.keyCodes.f2 = 113

v-bind修飾符

v-bind修飾符主要是為屬性進行操作,用來分別有如下:

async

能對props進行一個雙向綁定

//父組件
<comp :myMessage.sync="bar"></comp> 
//子組件
this.$emit('update:myMessage',params);

以上這種方法相當於以下的簡寫

//父親組件
<comp :myMessage="bar" @update:myMessage="func"></comp>
func(e){
 this.bar = e;
}
//子組件js
func2(){
  this.$emit('update:myMessage',params);
}

使用async需要注意以下兩點:

使用sync的時候,子組件傳遞的事件名格式必須為update:value,其中value必須與子組件中props中聲明的名稱完全一致

注意帶有 .sync 修飾符的 v-bind 不能和表達式一起使用

將 v-bind.sync 用在一個字面量的對象上,例如 v-bind.sync=」{ title: doc.title }」,是無法正常工作的

props

設置自定義標籤屬性,避免暴露數據,防止汙染HTML結構

<input id="uid" title="title1" value="1" :index.prop="index">

camel

將命名變為駝峰命名法,如將view-Box屬性名轉換為 viewBox

<svg :viewBox="viewBox"></svg>

三、應用場景

根據每一個修飾符的功能,我們可以得到以下修飾符的應用場景:

.self :將事件綁定在自身身上,相當於阻止事件冒泡參考文獻https://segmentfault.com/a/1190000016786254https://vue3js.cn/docs/zh

相關焦點

  • 什麼是Vue? 如何安裝和使用Vue?
    但是Angular、React是老外編寫的, 所以所有的資料都是英文的而Vue是國人編寫的, 所以所有的資料都是中文的, 並且Vue中整合了Angular、React中的眾多優點所以為了降低我們的學習難度, 我們先學Vue, 學完之後再學習Angular和React5.使用Vue有哪些優勢
  • Vue面試中,經常會被問到的面試題/Vue知識點整理
    切記不要以為背了面試題,就萬事大吉了,最好是理解背後的原理,這樣面試的時候才能侃侃而談。不然,稍微有水平的面試官一看就能看出,是否有真才實學還是剛好背中了這道面試題。(都是一些基礎的vue面試題,大神不用浪費時間往下看)一、對於MVVM的理解?MVVM 是 Model-View-ViewModel 的縮寫。
  • vue基本知識點總結——面試必備
    前一陣子看了很多關於vue的知識點,自己理解著整理一下,再加深一下印象。也希望可以幫助到有需要的同學。理解錯誤的地方,歡迎指正。1、對於Vue是一套漸進式框架的理解答:Vue是漸進的,沒有強主張,是個輕量視圖。它只做了自己應該做的事,沒有做多餘的事。2、vue.js的兩個核心是什麼?答:數據驅動和組件化。
  • 面試官:說說你對vue的mixin的理解,有哪些應用場景?
    一、mixin是什麼Mixin是面向對象程序設計語言中的類,提供了方法的實現。Vue.mixin({  created: function () {      console.log("全局混入")    }})使用全局混入需要特別注意,因為它會影響到每一個組件實例(包括第三方組件)PS:全局混入常用於插件的編寫
  • 20 道必看的 Vue 面試題 | 原力計劃
    Vuex 是什麼?哪種功能場景使用它?Vuex 是專門為 Vue.js 設計的狀態管理模式,它採用集中式儲存管理 Vue 應用中所有組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。當項目龐大的時候使用它:5. Vuex 有哪幾種屬性?6.
  • Vue.js 父子組件通信的十種方式
    面試官:Vue 中父子組件通信有哪些方式?自己先想一分鐘。無可否認,現在無論大廠還是小廠都已經用上了 Vue.js 框架,簡單易上手不說,教程詳盡,社區活躍,第三方套件還多。真的是前端開發人員必備技能。而且在面試當中也往往會問到關於 Vue 方面的各種問題,其中大部分面試官會問到如上這種問題。
  • SPA單頁面應用優化VUE性能優化
    Spa單頁面應用比如vue、react、angular都是屬於單頁面應用,那麼如何優化呢?咱們拿vue舉例。來做優化,webpack能做哪些優化呢?首先我們來了解一下懶加載是為了解決什麼問題。當我們在項目中遇到一些比較大的場景,裡面包含著數以百計的圖片,當用戶訪問這些頁面的時候,用戶等待的時間特別長,這樣的話,就有可能導致一部分的用戶沒有耐心,而丟失這部分用戶,於是就有了這裡的圖片懶加載。
  • 「Java」基礎19:修飾符有哪些?
    這就得學到一個新的修飾符了。一、final修飾符final,翻譯成中文就是「不可更改的 」。顧名思義,它是一個修飾符,用於修改不可更改的內容。被final修飾的類:不能被繼承。被final修飾的方法:不能被重寫。被final修飾的變量:不能被重新賦值。被final修飾的常量:名稱一般都有書寫規範,所有字母都大寫。多個單詞之間,使用下劃線進行分割。
  • 前端面試真題分享
    以下是技術面試環節問題整理(技術面試是由大連總公司的技術進行電話面試):面試官:首先面試官介紹了下公司業務方向, 主要是給華為做外包, 會有加班, 能不能接受我: 影響不大, 能接受面試官:(基礎問題) 兩個div, 在不加任何樣式修飾的情況下
  • Vue 3.0前的 TypeScript 最佳入門實踐
    let person: any = "前端勸退師"person = 25person = true主要應用場景有:接入第三方庫Ts菜逼前期都用5. Never3.4 實現與繼承: implementsvs extendsextends很明顯就是ES6裡面的類繼承,那麼 implement又是做什麼的呢?它和 extends有什麼不同?implement,實現。
  • 「不容錯過」34條 Vue 高質量實戰技巧
    6類可以掌握的修飾符表單修飾符表單類的修飾符都是和 v-model 搭配使用的,比如:v-model.lazy、v-model-trim 以及 v-model.number 等。.lazy:對表單輸入的結果進行延遲響應,通常和 v-model 搭配使用。
  • 「002期」JavaSE面試題(二):基本數據類型與訪問修飾符
    主要總結了Java基礎語法中訪問修飾符會出現的相關面試題,在後續,會沿著第一篇開篇的知識線路一直總結下去,做到日更!Q:Java的數據類型有哪些?Java中成員的訪問權限共有四種,可見性如下:Q:接口和抽象類有什麼區別?
  • 在.NET中,C#訪問修飾符決定類和成員的訪問權限,常見的有哪些?
    -訪問修飾符1.訪問修飾符在C#中,訪問修飾符用於控制接口/類/方法/屬性等訪問權限。常用的訪問修飾符有public/private/protected/internal等。1.1.Public公開訪問在C#中,public是最常用的訪問修飾符,表示公共訪問,公有訪問,不受任何限制,public關鍵字可以用在類和類成員上。公共訪問是允許的最高訪問級別,對訪問公共成員沒有限制。
  • Vue.js巧妙運用修飾符,幫你後期維護代碼省下大量的時間
    那在Vue.js中,對這些操作進行了一個很簡易的處理,那就是在我們綁定的事件後面加一個事件修飾符,這樣能讓我們一眼就能看出,該組件綁定了什麼事件 、對事件做了什麼處理,好了,我們來了解一下吧。正文在本文我就不詳細介紹Vue.js是如何給組件綁定事件了的,大家都知道是通過v-on:事件="事件名" 或者它的語法糖 @事件="事件名"。
  • 20 道必看的 Vue 面試題|原力計劃
    Vuex 是什麼?哪種功能場景使用它?Vuex 是專門為 Vue.js 設計的狀態管理模式,它採用集中式儲存管理 Vue 應用中所有組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。工程中常用的 npm 命令有哪些?
  • 一起學JAVA——修飾符
    java修飾符的作用就是對類或類成員進行修飾或限制。訪問修飾符訪問修飾符作用是控制類成員的可見度。 類的訪問控制符有兩種:public關鍵字修飾:可以被所有的類訪問預設為default:只能被同一包中的類訪問static(靜態修飾符)
  • 前端面試題——Vue
    前言前幾天整理了一些 html + css + JavaScript 常見的面試題(https://segmentfault.com/u/youdangde_5c8b208a23f95/articles),然後現在也是找了一些在 Vue 方面經常出現的面試題,留給自己查看消化,也分享給有需要的小夥伴。
  • 化身面試官出 20+ Vue 面試題,超級乾貨
    1.了解過(用過)react 或者 angular 嗎,他們有什麼區別?答案Vue 借鑑了 angular 的模板和數據綁定技術,又借鑑了 react 的組件化和虛擬 DOM 技術。會遍歷當前平臺下相對的屬性處理代碼,其中就有 updateDOMLListeners 方法,內部會傳入 add() 方法組件綁定事件,原生事件,自定義事件;組件綁定之間是通過 Vue 中自定義的 $on 方法實現的。
  • 利用vue.js進行自定義事件,一學就會
    vuejs中如何綁定事件綁定監視vue.js事件監聽通v-on指令配置在HTML上。實際上所有的vue.js事件處理方法和表達式都嚴格綁定在當前視圖的viewmodel上。優點:1)通過查看HTML模板便能輕鬆定住Javascript代碼對應的方法。
  • java修飾符
    Java 修飾符Java語言提供了很多修飾符,主要分為以下兩類:訪問修飾符非訪問修飾符修飾符用來定義類、方法或者變量,通常放在語句的最前端。我們通過下面的例子來說明:public class ClassName {// ...