一文帶你搞懂Vue3的基本語法
1.通過 CDN 使用 Vue3
你可以借助 script 標(biāo)簽直接通過 CDN 來使用 Vue:
<script src="https://unpkg.com/vue@next"></script>
通過 CDN 使用 Vue 時(shí),不涉及“構(gòu)建步驟”。這使得設(shè)置更加簡單,并且可以用于增強(qiáng)靜態(tài)的 HTML 或與后端框架集成
接下來我們從 Hello Vue!! 的代碼開始學(xué)起
<div id="hello-vue" class="demo"> {{ message }} </div> <script> const HelloVueApp = { data() { return { message: 'Hello Vue!!' } } } Vue.createApp(HelloVueApp).mount('#hello-vue') </script>
mount('#hello-vue') 將 Vue 應(yīng)用 HelloVueApp 掛載到 <div id="hello-vue"></div> 中
{{ }} 用于輸出對象屬性和函數(shù)返回值
{{ message }} 對應(yīng)應(yīng)用中 message 的值
輸出:
data 選項(xiàng)是一個(gè)函數(shù)。Vue 在創(chuàng)建新組件實(shí)例的過程中調(diào)用此函數(shù)。它應(yīng)該返回一個(gè)對象,然后 Vue 會(huì)通過響應(yīng)性系統(tǒng)將其包裹起來,并以 $data 的形式存儲(chǔ)在組件實(shí)例中
我們可以在組件中添加方法,使用 methods 選項(xiàng),該選項(xiàng)包含了所需方法的對象。
以下實(shí)例我們添加了 methods 選項(xiàng),選項(xiàng)中包含了 increment() 方法:
<script> const HelloVueApp = { data() { return { count: 521 } }, methods: { increment() { // this 指向該組件實(shí)例 this.count++ } } } Vue.createApp(HelloVueApp).mount('#hello-vue') </script>
2.Vue3 模板語法
Vue 使用了基于 HTML 的模板語法,允許開發(fā)者聲明式地將 DOM 綁定至底層 Vue 實(shí)例的數(shù)據(jù)。
Vue 的核心是一個(gè)允許你采用簡潔的模板語法來聲明式的將數(shù)據(jù)渲染進(jìn) DOM 的系統(tǒng)。
結(jié)合響應(yīng)系統(tǒng),在應(yīng)用狀態(tài)改變時(shí), Vue 能夠智能地計(jì)算出重新渲染組件的最小代價(jià)并應(yīng)用到 DOM 操作上。
文本
數(shù)據(jù)綁定最常見的形式就是使用 {{...}}的文本插值:
<div id="app"> <p>{{ message }}</p> </div>
Html
使用 v-html 指令用于輸出 html 代碼:
<div id="hello-vue" class="demo"> <span v-html="rawHtml"></span> </div> <script> const HelloVueApp = { data() { return { rawHtml: '<span style="color: red">這里會(huì)顯示紅色!</span>' } } } Vue.createApp(HelloVueApp).mount('#hello-vue') </script>
屬性
HTML 屬性中的值應(yīng)使用 v-bind 指令
<style> .class1 { background: #444; color: #eee; } </style> <div id="app"> <label for="r1">修改顏色</label><input type="checkbox" v-model="use" id="r1"> <br/><br/> <div v-bind:class="{'class1': use}"> v-bind:class 指令 </div> </div> <script> const app = { data() { return { use: false } } } Vue.createApp(app).mount('#app') </script>
demo:點(diǎn)擊按鈕可以實(shí)現(xiàn)div塊變色
表達(dá)式
Vue.js 都提供了完全的 JavaScript 表達(dá)式支持
例如:
<div id="app"> 算數(shù)表達(dá)式:{{521 + 1314}}<br/> 三目表達(dá)式:{{ok ? 'YES' : 'NO'}}<br/> 字符串反轉(zhuǎn):{{ message.split('').reverse().join('') }}<br/> </div> <script> const app = { data() { return { ok: true, message: 'IMUSTCTF!' } } } Vue.createApp(app).mount('#app') </script>
瀏覽器輸出:
算數(shù)表達(dá)式:1835
三目表達(dá)式:YES
字符串反轉(zhuǎn):!FTCTSUMI
指令
指令是帶有 v- 前綴的特殊屬性。
指令用于在表達(dá)式的值改變時(shí),將某些行為應(yīng)用到 DOM 上。如下例子:
<div id="app"> <p v-if="seen">現(xiàn)在你看到我了</p> </div> <script> const app = { data() { return { seen: true /* 改為false,信息就無法顯示 */ } } } Vue.createApp(app).mount('#app') </script>
這里, v-if 指令將根據(jù)表達(dá)式 seen 的值( true 或 false )來決定是否插入 p 元素
另外還有其它很多指令,每個(gè)都有特殊的功能。例如,v-for 指令可以綁定數(shù)組的數(shù)據(jù)來渲染一個(gè)項(xiàng)目列表:
<div id="app"> <ol> <li v-for="site in sites"> {{ site.text }} </li> </ol> </div> <script> const app = { data() { return { sites: [ {text: 'Google'}, {text: 'IMUSTCTF'}, {text: 'Taobao'} ] } } } Vue.createApp(app).mount('#app') </script>
參數(shù)
參數(shù)在指令后以冒號指明。例如, v-bind 指令被用來響應(yīng)地更新 HTML 屬性:
<div id="app"> <p><a v-bind:href="url">百度網(wǎng)</a></p> </div> <script> const app = { data() { return { url: 'https://www.baidu.com' } } } Vue.createApp(app).mount('#app') </script>
在這里 href 是參數(shù),告知 v-bind 指令將該元素的 href 屬性與表達(dá)式 url 的值綁定
也可以使用縮寫:
<a :href="url"></a>
另一個(gè)例子是 v-on 指令,它用于監(jiān)聽 DOM 事件:
<!-- 完整語法 --> <a v-on:click="doSomething"> ... </a> <!-- 縮寫 --> <a @click="doSomething"> ... </a> <!-- 動(dòng)態(tài)參數(shù)的縮寫 (2.6.0+) --> <a @[event]="doSomething"> ... </a>
3.模板用戶輸入雙向綁定
在 input 輸入框中我們可以使用 v-model 指令來實(shí)現(xiàn)雙向數(shù)據(jù)綁定:
<div id="app"> <p>{{ message }}</p> <input v-model="message"> </div> <script> const app = { data() { return { message: 'Dahe' } } } Vue.createApp(app).mount('#app') </script>
v-model 指令用來在 input、select、textarea、checkbox、radio 等表單控件元素上創(chuàng)建雙向數(shù)據(jù)綁定,根據(jù)表單上的值,自動(dòng)更新綁定的元素的值
按鈕的事件我們可以使用 v-on 監(jiān)聽事件,并對用戶的輸入進(jìn)行響應(yīng)。
以下實(shí)例在用戶點(diǎn)擊按鈕后對字符串進(jìn)行反轉(zhuǎn)操作:
<div id="app"> <p>{{ message }}</p> <button v-on:click="reverseMessage">反轉(zhuǎn)字符串</button> </div> <script> const app = { data() { return { message: 'XIAOQIANWOAINI!' } }, methods: { reverseMessage() { this.message = this.message .split('') .reverse() .join('') } } } Vue.createApp(app).mount('#app') </script>
到此這篇關(guān)于一文帶你搞懂Vue3的基本語法的文章就介紹到這了,更多相關(guān)Vue3基本語法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VueJs里利用CryptoJs實(shí)現(xiàn)加密及解密的方法示例
這篇文章主要介紹了VueJs里利用CryptoJs實(shí)現(xiàn)加密及解密的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04Vuepress生成文檔部署到gitee.io的注意事項(xiàng)及說明
這篇文章主要介紹了Vuepress生成文檔部署到gitee.io的注意事項(xiàng)及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09Nuxt封裝@nuxtjs/axios請求后端數(shù)據(jù)方式
這篇文章主要介紹了Nuxt封裝@nuxtjs/axios請求后端數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue中使用keep-alive動(dòng)態(tài)刪除已緩存組件方式
這篇文章主要介紹了vue中使用keep-alive動(dòng)態(tài)刪除已緩存組件方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08el-upload多選文件上傳報(bào)錯(cuò)解決方案
本文主要介紹了el-upload多選文件上傳報(bào)錯(cuò)解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07vue項(xiàng)目啟動(dòng)出現(xiàn)cannot GET /服務(wù)錯(cuò)誤的解決方法
這篇文章主要介紹了vue項(xiàng)目啟動(dòng)出現(xiàn)cannot GET /服務(wù)錯(cuò)誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04詳解vue實(shí)現(xiàn)坐標(biāo)拾取器功能示例
這篇文章主要介紹了詳解vue實(shí)現(xiàn)坐標(biāo)拾取器功能示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11vue圖片加載失敗時(shí)用默認(rèn)圖片替換的方法
這篇文章主要給大家介紹了關(guān)于vue圖片加載失敗時(shí)用默認(rèn)圖片替換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08