傳說(shuō)中VUE的語(yǔ)法糖到底是做什么的
一、什么是語(yǔ)法糖?
語(yǔ)法糖也譯為糖衣語(yǔ)法,是由英國(guó)計(jì)算機(jī)科學(xué)家彼得·約翰·蘭達(dá)(Peter J. Landin)發(fā)明的一個(gè)術(shù)語(yǔ)。指的是計(jì)算機(jī)語(yǔ)言中添加的一種語(yǔ)法,在不影響功能的情況下,添加某種簡(jiǎn)單的語(yǔ)法也能實(shí)現(xiàn)效果,這種語(yǔ)法對(duì)計(jì)算機(jī)沒(méi)有任何影響,但是對(duì)于程序員更方便,通常增加的語(yǔ)法糖能夠增加程序員的可讀性,減少出錯(cuò)的機(jī)會(huì)。
使用語(yǔ)法糖可以簡(jiǎn)化代碼,更便于程序員開(kāi)發(fā)。
二、VUE中語(yǔ)法糖有哪些?
1、最常見(jiàn)的語(yǔ)法糖 v-model
使用 v-model 可以實(shí)現(xiàn)數(shù)據(jù)雙向綁定,但是如何實(shí)現(xiàn)的呢?
v-model 綁定數(shù)據(jù)之后,既綁定了數(shù)據(jù),又添加了事件監(jiān)聽(tīng),這個(gè)事件就是 input 事件。
使用案例:
//語(yǔ)法糖寫(xiě)法 <input type="text" v-model="name" > //還原為以下實(shí)例 <input type="text" v-bind:value="name" v-on:input="name=$event.target.value">
輸入的時(shí)候會(huì)觸發(fā) input 事件,input 事件會(huì)把當(dāng)前值賦值給 value ,這就是 v-model 為什么可以實(shí)現(xiàn)雙向綁定的原因。
2、v-bind 的語(yǔ)法糖
v-bind 用來(lái)添加動(dòng)態(tài)屬性的,常見(jiàn)的 src、href、class、style、title 等屬性都可以通過(guò) v-bind 添加動(dòng)態(tài)屬性值。
v-bind 的語(yǔ)法糖就是去掉 v-bind 替換成冒號(hào) (:)
// 語(yǔ)法糖寫(xiě)法 <div :title="title"> <img :src="url" alt=""> <a :href="link" rel="external nofollow" rel="external nofollow" >沒(méi)有語(yǔ)法糖</a> </div> // 沒(méi)有語(yǔ)法糖 <div v-bind:title="title"> <img v-bind:src="url" alt=""> <a v-bind:href="link" rel="external nofollow" rel="external nofollow" >沒(méi)有語(yǔ)法糖</a> </div>
3、v-on 的語(yǔ)法糖
v-on 綁定事件監(jiān)聽(tīng)器的,v-on 的語(yǔ)法糖,就是簡(jiǎn)寫(xiě)成@ 。
情況1:如果方法不傳參時(shí),可以不加小括號(hào)。
<button @click="btn">語(yǔ)法糖</button> <button v-on:click="btn">無(wú)語(yǔ)法糖</button> //需要注意的是,如果方法本身有一個(gè)參數(shù),會(huì)默認(rèn)將原生的事件event參數(shù)傳遞進(jìn)來(lái) methods:{ btn( event ){ console.log( 'event' , event ) } }
情況2:如果需要傳遞參數(shù)時(shí),又同時(shí)需要 event 參數(shù)。
<button @click="btn( '點(diǎn)擊事件' , $event )">語(yǔ)法糖</button> //需要注意的是,$event 事件拿到瀏覽器事件對(duì)象 methods:{ btn( type, event ){ console.log( 'type' , type ) //點(diǎn)擊事件 console.log( 'event' , event ) } }
4、修飾符
修飾符是以半角句號(hào) . 指明的特殊后綴。v-on 后面的修飾符,也是語(yǔ)法糖。
示例:鏈接添加點(diǎn)擊事件,點(diǎn)擊之后不希望跳轉(zhuǎn)。
//語(yǔ)法糖 <a rel="external nofollow" rel="external nofollow" @click.prevent="go">百度</a> //普通寫(xiě)法 <a rel="external nofollow" rel="external nofollow" v-on:click="go">百度</a> methods:{ go(e){ e.preventDefault(); console.log('阻止鏈接跳轉(zhuǎn)') } }
prevent 修飾符是阻止默認(rèn)事件。還有 submit 同樣也適用。
<form @submit.prevent="onSubmit"></form>
下列是常見(jiàn)的修飾符,與上邊 .prevent 使用相同。
- .stop 用來(lái)阻止事件冒泡。
- .once 事件只觸發(fā)一次。
- .self 事件只在自身觸發(fā),不能從內(nèi)部觸發(fā)。
- .enter | .tab | .delete | .esc ..... 鍵盤(pán)修飾符
- .ctr | .alt | .shift | .meta 系統(tǒng)修飾符
5、動(dòng)態(tài)css
使用 v-bind 可以通過(guò) style 或 class, 可以添加動(dòng)態(tài)樣式。
//點(diǎn)擊 你好,實(shí)現(xiàn)文字紅黑之間切換 <h1 @click=" changeColor = !changeColor " :style="{color:changeColor?'red':'black'}"> 你好 </h1> data:{ changeColor:false }
6、注冊(cè)組件語(yǔ)法糖
所謂的注冊(cè)組件語(yǔ)法糖是指省去組件構(gòu)造器的定義,直接將組件構(gòu)造器對(duì)象傳入注冊(cè)組件函數(shù)里,這樣會(huì)減少 CPU 的調(diào)度以及內(nèi)存的分配。
全局組件使用:
//全局組件語(yǔ)法糖寫(xiě)法 Vue.component( 'my-component' , template:` <div>組件內(nèi)容</div> `) /* 全局組件注冊(cè) */ //組件使用 <my-component></my-component> //注冊(cè)組件 const myComponent = Vue.extend({ template:` <div> <h2>VUkeh</h2> </div> ` }) Vue.component('myComponent', myComponent)
局部組件使用:
//全局組件語(yǔ)法糖寫(xiě)法 components:{ 'my-component':{ template:`<div>組件內(nèi)容</div>` } } /* 局部組件注冊(cè) */ //注冊(cè)組件 const myComponent = Vue.extend({ template:` <div> <h2>VUkeh</h2> </div> `, components:{ child:{ template:`<div>子組件內(nèi)容</div>` } } }) Vue.component('myComponent', myComponent)
到此這篇關(guān)于傳說(shuō)中 VUE 的“語(yǔ)法糖”到底是啥的文章就介紹到這了,更多相關(guān)vue語(yǔ)法糖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解keep-alive + vuex 讓緩存的頁(yè)面靈活起來(lái)
這篇文章主要介紹了keep-alive + vuex 讓緩存的頁(yè)面靈活起來(lái),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04vue+element-ui?校驗(yàn)開(kāi)始時(shí)間與結(jié)束時(shí)間的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue+element-ui?校驗(yàn)開(kāi)始時(shí)間與結(jié)束時(shí)間的代碼實(shí)現(xiàn),最主要的需求是開(kāi)始時(shí)間不能早于當(dāng)前時(shí)間,感興趣的朋友跟隨小編一起看看吧2024-07-07詳解Vue內(nèi)部怎樣處理props選項(xiàng)的多種寫(xiě)法
這篇文章主要介紹了詳解Vue內(nèi)部怎樣處理props選項(xiàng)的多種寫(xiě)法,詳細(xì)的介紹了props的使用的寫(xiě)法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Vue和relation-graph庫(kù)打造高質(zhì)量的關(guān)系圖應(yīng)用程序
這篇文章主要介紹了Vue和relation-graph庫(kù)打造高質(zhì)量的關(guān)系圖應(yīng)用程序,在這篇文章中,我們深入探討了如何使用Vue和relation-graph高效打造關(guān)系圖,我們?cè)敿?xì)介紹了數(shù)據(jù)準(zhǔn)備、關(guān)系映射、點(diǎn)擊事件等關(guān)鍵步驟,需要的朋友可以參考下2023-09-09vant-ui框架的一個(gè)bug(解決切換后onload不觸發(fā))
這篇文章主要介紹了vant-ui框架的一個(gè)bug(解決切換后onload不觸發(fā)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11vue3-pinia-ts項(xiàng)目中的使用示例詳解
這篇文章主要介紹了vue3-pinia-ts項(xiàng)目中的使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Vue中引用JSON數(shù)據(jù)的方法小結(jié)
在現(xiàn)代Web開(kāi)發(fā)中,JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,Vue.js作為一個(gè)流行的前端框架,支持多種方式引入和處理JSON數(shù)據(jù),本文將詳細(xì)介紹幾種在Vue中引用JSON數(shù)據(jù)的方法,需要的朋友可以參考下2024-10-10vue后臺(tái)項(xiàng)目如何使用router.addRoutes動(dòng)態(tài)加入路由的思路
這篇文章主要介紹了vue后臺(tái)項(xiàng)目如何使用router.addRoutes動(dòng)態(tài)加入路由的思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06