一文带你学会Vue3基本语法

简介: ata 选项是一个函数。Vue 在创建新组件实例的过程中调用此函数。它应该返回一个对象,然后 Vue 会通过响应性系统将其包裹起来,并以 $data 的形式存储在组件实例中我们可以在组件中添加方法,使用 methods 选项,该选项包含了所需方法的对象。以下实例我们添加了 methods 选项,选项中包含了 increment() 方法:


1.通过 CDN 使用 Vue3


你可以借助 script 标签直接通过 CDN 来使用 Vue:


<script src="https://unpkg.com/vue@next"></script>


通过 CDN 使用 Vue 时,不涉及“构建步骤”。这使得设置更加简单,并且可以用于增强静态的 HTML 或与后端框架集成

接下来我们从 Hello Vue!! 的代码开始学起


<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 应用 HelloVueApp 挂载到

{{ }} 用于输出对象属性和函数返回值

{{ message }} 对应应用中 message 的值

输出:



ata 选项是一个函数。Vue 在创建新组件实例的过程中调用此函数。它应该返回一个对象,然后 Vue 会通过响应性系统将其包裹起来,并以 $data 的形式存储在组件实例中

我们可以在组件中添加方法,使用 methods 选项,该选项包含了所需方法的对象。

以下实例我们添加了 methods 选项,选项中包含了 increment() 方法:


<script>
    const HelloVueApp = {
        data() {
            return {
                count: 521
            }
        },
        methods: {
            increment() {
                // this 指向该组件实例
                this.count++
            }
        }
    }
    Vue.createApp(HelloVueApp).mount('#hello-vue')
</script>


2.Vue3 模板语法


Vue 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。


Vue 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。


结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。


文本


数据绑定最常见的形式就是使用 {{...}}的文本插值:


<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">这里会显示红色!</span>'
            }
        }
    }
    Vue.createApp(HelloVueApp).mount('#hello-vue')
</script>



属性


HTML 属性中的值应使用 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:点击按钮可以实现div块变色



表达式


Vue.js 都提供了完全的 JavaScript 表达式支持

例如:


<div id="app">
    算数表达式:{{521 + 1314}}<br/>
    三目表达式:{{ok ? 'YES' : 'NO'}}<br/>
    字符串反转:{{ message.split('').reverse().join('') }}<br/>
</div>
<script>
    const app = {
        data() {
            return {
                ok: true,
                message: 'IMUSTCTF!'
            }
        }
    }
    Vue.createApp(app).mount('#app')
</script>


浏览器输出:


算数表达式:1835
三目表达式:YES
字符串反转:!FTCTSUMI


指令


指令是带有 v- 前缀的特殊属性。

指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:


<div id="app">
    <p v-if="seen">现在你看到我了</p>
</div>
<script>
    const app = {
        data() {
            return {
                seen: true /* 改为false,信息就无法显示 */
            }
        }
    }
    Vue.createApp(app).mount('#app')
</script>


这里, v-if 指令将根据表达式 seen 的值( true 或 false )来决定是否插入 p 元素

另外还有其它很多指令,每个都有特殊的功能。例如,v-for 指令可以绑定数组的数据来渲染一个项目列表:


<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>



参数


参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:


<div id="app">
    <p><a v-bind:href="url">百度网</a></p>
</div>
<script>
    const app = {
        data() {
            return {
                url: 'https://www.baidu.com'
            }
        }
    }
    Vue.createApp(app).mount('#app')
</script>


在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定

也可以使用缩写:


<a :href="url"></a>


另一个例子是 v-on 指令,它用于监听 DOM 事件:


<!-- 完整语法 -->
<a v-on:click="doSomething"> ... </a>
<!-- 缩写 -->
<a @click="doSomething"> ... </a>
<!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>


3.模板用户输入双向绑定


在 input 输入框中我们可以使用 v-model 指令来实现双向数据绑定:


<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 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值

按钮的事件我们可以使用 v-on 监听事件,并对用户的输入进行响应。

以下实例在用户点击按钮后对字符串进行反转操作:


<div id="app">
    <p>{{ message }}</p>
    <button v-on:click="reverseMessage">反转字符串</button>
</div>
<script>
    const app = {
        data() {
            return {
                message: 'XIAOQIANWOAINI!'
            }
        },
        methods: {
            reverseMessage() {
                this.message = this.message
                    .split('')
                    .reverse()
                    .join('')
            }
        }
    }
    Vue.createApp(app).mount('#app')
</script>
目录
相关文章
|
4天前
|
JavaScript
vue学习(3)模板语法
vue学习(3)模板语法
34 11
|
2天前
|
JavaScript
Vue3中路由跳转的语法
Vue3中路由跳转的语法
105 58
|
5天前
|
前端开发
vue3+ts项目中使用mockjs
vue3+ts项目中使用mockjs
198 58
|
2天前
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
|
3天前
|
JavaScript 开发者
彻底搞懂 Vue3 中 watch 和 watchEffect是用法
彻底搞懂 Vue3 中 watch 和 watchEffect是用法
|
9天前
|
JavaScript API
如何使用Vue3的可计算属性
【9月更文挑战第5天】如何使用Vue3的可计算属性
42 13
vue3 reactive数据更新,视图不更新问题
vue3 reactive数据更新,视图不更新问题
|
9天前
|
资源调度 JavaScript API
vue3 组件通信方式
vue3 组件通信方式
39 11
|
1天前
|
JavaScript
|
1天前
vue3定义暴露一些常量
vue3定义暴露一些常量