主頁 > 企業開發 > 利用Vue這些修飾符幫我節省20%的開發時間

利用Vue這些修飾符幫我節省20%的開發時間

2020-09-19 20:57:15 企業開發

為了方便大家寫代碼,vue.js給大家提供了很多方便的修飾符,比如我們經常用到的取消冒泡,阻止默認事件等等~,

目錄

  • 表單修飾符
  • 事件修飾符
  • 滑鼠按鍵修飾符
  • 鍵值修飾符
  • v-bind修飾符(實在不知道叫啥名字)

表單修飾符

填寫表單,最常用的是什么?input!v-model~而我們的修飾符正是為了簡化這些東西而存在的

1.lazy

 

 

從這里我們可以看到,我們還在輸入的時候,游標還在的時候,下面的值就已經出來了,可以說是非常地實時,

但是有時候我們希望,在我們輸入完所有東西,游標離開才更新視圖,

 

這樣即可~這樣只有當我們游標離開輸入框的時候,它才會更新視圖,相當于在onchange事件觸發更新,

2.trim

在我們的輸入框中,我們經常需要過濾一下一些輸入完密碼不小心多敲了一下空格的兄弟輸入的內容,

 

為了讓你更清楚的看到,我改了一下樣式,不過問題不大,相信你已經清楚看到這個大大的hello左右兩邊沒有空格,盡管你在input框里敲爛了空格鍵,

需要注意的是,它只能過濾首尾的空格!首尾,中間的是不會過濾的

3.number

看這個名字就知道,應該是限制輸入數字或者輸入的東西轉換成數字,but不是辣么干的,

 

如果你先輸入數字,那它就會限制你輸入的只能是數字,
如果你先輸入字串,那它就相當于沒有加.number

事件修飾符

1.stop

由于事件冒泡的機制,我們給元素系結點擊事件的時候,也會觸發父級的點擊事件,

 

一鍵阻止事件冒泡,簡直方便得不行,相當于呼叫了event.stopPropagation()方法,

 

2.prevent

用于阻止事件的默認行為,例如,當點擊提交按鈕時阻止對表單的提交,相當于呼叫了event.preventDefault()方法,

 

 

注意:修飾符可以同時使用多個,但是可能會因為順序而有所不同,

用 v-on:click.prevent.self 會阻止所有的點擊,而 v-on:click.self.prevent 只會阻止對元素自身的點擊,

也就是從左往右判斷~

3.self

只當事件是從事件系結的元素本身觸發時才觸發回呼,像下面所示,剛剛我們從.stop時候知道子元素會冒泡到父元素導致觸發父元素的點擊事件,當我們加了這個.self以后,我們點擊button不會觸發父元素的點擊事件shout,只有當點擊到父元素的時候(藍色背景)才會shout~從這個self的英文翻譯過來就是‘自己,本身’可以看出這個修飾符的用法

 

4.once

這個修飾符的用法也是和名字一樣簡單粗暴,只能用一次,系結了事件以后只能觸發一次,第二次就不會觸發,

 

5.capture


從上面我們知道了事件的冒泡,其實完整的事件機制是:捕獲階段--目標階段--冒泡階段,

 

默認的呢,是事件觸發是從目標開始往上冒泡,

 

當我們加了這個.capture以后呢,我們就反過來了,事件觸發從包含這個元素的頂層開始往下觸發,

 

從上面這個例子我們點擊obj4的時候,就可以清楚地看出區別,obj1,obj2在捕獲階段就觸發了事件,因此是先1后2,后面的obj3,obj4是默認的冒泡階段觸發,因此是先4然后冒泡到3~

6.passive

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

 

7.native

我們經常會寫很多的小組件,有些小組件可能會系結一些事件,但是,像下面這樣系結事件是不會觸發的

 

必須使用.native來修飾這個click事件(即),可以理解為該修飾符的作用就是把一個vue組件轉化為一個普通的HTML標簽,
注意:使用.native修飾符來操作普通HTML標簽是會令事件失效的

滑鼠按鈕修飾符

剛剛我們講到這個click事件,我們一般是會用左鍵觸發,有時候我們需要更改右鍵選單啥的,就需要用到右鍵點擊或者中間鍵點擊,這個時候就要用到滑鼠按鈕修飾符

  • .left 左鍵點擊
  • .right 右鍵點擊
  • .middle 中鍵點擊

 

鍵值修飾符

其實這個也算是事件修飾符的一種,因為它都是用來修飾鍵盤事件的,
比如onkeyup,onkeydown啊

1.keyCode

如果不用keyCode修飾符,那我們每次按下鍵盤都會觸發shout,當我們想指定按下某一個鍵才觸發這個shout的時候,這個修飾符就有用了,具體鍵碼查看鍵碼對應表https://zhidao.baidu.com/question/266291349.html

 

為了方便我們使用,vue給一些常用的鍵提供了別名

 

可以通過全域 config.keyCodes 物件自定義按鍵修飾符別名:

 

我們從上面看到,鍵分成了普通常用的鍵和系統修飾鍵,區別是什么呢?
當我們寫如下代碼的時候,我們會發現如果僅僅使用系統修飾鍵是無法觸發keyup事件的,

那該如何呢?我們需要將系統修飾鍵和其他鍵碼鏈接起來使用,比如

 

這樣當我們同時按下ctrl+c時,就會觸發keyup事件,
另,如果是滑鼠事件,那就可以單獨使用系統修飾符,

 

大概是什么意思呢,就是你不能單手指使用系統修飾鍵的修飾符(最少兩個手指,可以多個),你可以一個手指按住系統修飾鍵一個手指按住另外一個鍵來實作鍵盤事件,也可以用一個手指按住系統修飾鍵,另一只手按住滑鼠來實作滑鼠事件,

2.exact (2.5新增)

我們上面說了這個系統修飾鍵,當我們像這樣系結了click鍵按下的事件,驚奇的是,我們同時按下幾個系統修飾鍵,比如ctrl shift點擊,也能觸發,可能有些場景我們只需要或者只能按一個系統修飾鍵來觸發(像制作一些快捷鍵的時候),而當我們按下ctrl和其他鍵的時候則無法觸發,那就這樣寫,

注意:這個只是限制系統修飾鍵的,像下面這樣書寫以后你還是可以按下ctrl + c,ctrl+v或者ctrl+普通鍵 來觸發,但是不能按下ctrl + shift +普通鍵來觸發,

 

 

 

20

然后下面這個你可以同時按下enter+普通鍵來觸發,但是不能按下系統修飾鍵+enter來觸發,相信你已經能聽懂了8~

 

21

v-bind修飾符

1.sync(2.3.0+ 新增)

在有些情況下,我們可能需要對一個 prop 進行“雙向系結”,不幸的是,真正的雙向系結會帶來維護上的問題,因為子組件可以修改父組件,且在父組件和子組件都沒有明顯的改動來源,我們通常的做法是

 

22

現在這個.sync修飾符就是簡化了上面的步驟

 

23

這樣確實會方便很多,但是也有很多需要注意的點

 

1、使用sync的時候,子組件傳遞的事件名必須為update:value,其中value必須與子組件中props中宣告的名稱完全一致(如上例中的myMessage,不能使用my-message)

2、注意帶有 .sync 修飾符的 v-bind 不能和運算式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’” 是無效的),取而代之的是,你只能提供你想要系結的屬性名,類似 v-model,

3將 v-bind.sync 用在一個字面量的物件上,例如 v-bind.sync=”{ title: doc.title }”,是無法正常作業的,因為在決議一個像這樣的復雜運算式的時候,有很多邊緣情況需要考慮,

2.prop

要學習這個修飾符,我們首先要搞懂兩個東西的區別,

 

24

 

25

 

其實attribute和property兩個單詞,翻譯出來都是屬性,但是《javascript高級程式設計》將它們翻譯為特性和屬性,以示區分

 

26

從上面我們可以看到如果直接使用v-bind系結,則默認會系結到dom節點的attribute,
為了

  • 通過自定義屬性存盤變數,避免暴露資料
  • 防止污染 HTML 結構

我們可以使用這個修飾符,如下

 

27

3.camel

由于HTML 特性是不區分大小寫的,

 

實際上會渲染為

 

這將導致渲染失敗,因為 SVG 標簽只認 viewBox,卻不知道 viewbox 是什么,
如果我們使用.camel修飾符,那它就會被渲染為駝峰名,
另,如果你使用字串模版,則沒有這些限制,

 

最后

不知道有沒有漏的,如果有漏的麻煩在評論區告知一聲,有建議或者意見也可以提一下,謝謝~

為此,為了學好前端,創建了一個學習交流,能夠與大家一起學習、交流,大家免費領取面試題,電子書籍,特效專案原始碼等干貨,

 

先奉上一些資料圖:

 

 

 

 

 

更多學習資料查看地址:web前端小白進階方法筆記,學習資料,面試題和視頻,專案原始碼免費領取(持續更新)

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/83649.html

標籤:JavaScript

上一篇:Deno會在短期內取代Node嗎?

下一篇:Ref實作導航滾動定位

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more