Vue 3 备忘清单
渐进式 JavaScript 框架 Vue 3 备忘清单的快速参考列表,包含常用 API 和示例。
入门
介绍
Vue 是一套用于构建用户界面的渐进式框架
注意:Vue 3.x 版本对应 Vue Router 4.x 路由版本
创建应用
已安装 16.0 或更高版本的 Node.js
$ npm init vue@latest
指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具
✔ Project name: … <your-project-name>✔ Add TypeScript? … No/Yes✔ Add JSX Support? … No/Yes✔ Add Vue Router for Single Page Application development? … No/Yes✔ Add Pinia for state management? … No/Yes✔ Add Vitest for Unit testing? … No/Yes✔ Add Cypress for both Unit and End-to-End testing? … No/Yes✔ Add ESLint for code quality? … No/Yes✔ Add Prettier for code formatting? … No/YesScaffolding project in ./<your-project-name>...Done.
安装依赖并启动开发服务器
$ cd <your-project-name>$ npm install$ npm run dev
当你准备将应用发布到生产环境时,请运行:
$ npm run build
此命令会在 ./dist 文件夹中为你的应用创建一个生产环境的构建版本
应用实例
import { createApp } from 'vue'const app = createApp({data() {return { count: 0 }}})app.mount('#app')
挂载应用
<div id="app"><button @click="count++">{{ count }}</button></div>
通过 CDN 使用 Vue
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><div id="app">{{ message }}</div><script>const { createApp } = VuecreateApp({data() {return {message: 'Hello Vue!'}}}).mount('#app')</script>
使用 ES 模块构建版本
<div id="app">{{ message }}</div><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'createApp({data() {return {message: 'Hello Vue!'}}}).mount('#app')</script>
模板语法
文本插值
<span>Message: {{ msg }}</span>
使用的是 Mustache 语法 (即双大括号),每次 msg 属性更改时它也会同步更新
原始 HTML
<p>Using text interpolation: {{ rawHtml }}</p><p>Using v-html directive: <span v-html="rawHtml"></span></p>
双大括号{{}}会将数据解释为纯文本,使用 v-html 指令,将插入 HTML
Attribute 绑定
<div v-bind:id="dynamicId"></div>
简写
<div :id="dynamicId"></div>
布尔型 Attribute
<button :disabled="isButtonDisabled">Button</button>
动态绑定多个值
data() {return {objectOfAttrs: {id: 'container',class: 'wrapper'}}}
通过不带参数的 v-bind,你可以将它们绑定到单个元素上
<div v-bind="objectOfAttrs"></div>
使用 JavaScript 表达式
{{ number + 1 }}{{ ok ? 'YES' : 'NO' }}{{ message.split('').reverse().join('') }}<div :id="`list-${id}`"></div>
仅支持表达式(例子都是无效)
<!-- 这是一个语句,而非表达式 -->{{ var a = 1 }}<!-- 条件控制也不支持,请使用三元表达式 -->{{ if (ok) { return message } }}
调用函数
<span :title="toTitleDate(date)">{{ formatDate(date) }}</span>
指令 Directives
<p v-if="seen">Now you see me</p>
参数 Arguments
<a v-bind:href="url"> ... </a><!-- 简写 --><a :href="url"> ... </a>
绑定事件
<a v-on:click="doSomething"> ... </a><!-- 简写 --><a @click="doSomething"> ... </a>
动态参数
<a v-bind:[attributeName]="url"> ... </a><!-- 简写 --><a :[attributeName]="url"> ... </a>
这里的 attributeName 会作为一个 JS 表达式被动态执行
动态的事件名称
<a v-on:[eventName]="doSomething"> ... </a><!-- 简写 --><a @[eventName]="doSomething">
修饰符 Modifiers
<form @submit.prevent="onSubmit">...</form>
.prevent 修饰符会告知 v-on 指令对触发的事件调用 event.preventDefault()
指令语法
v-on:submit.prevent="onSubmit"──┬─ ─┬──── ─┬───── ─┬──────┆ ┆ ┆ ╰─ Value 解释为JS表达式┆ ┆ ╰─ Modifiers 由前导点表示┆ ╰─ Argument 跟随冒号或速记符号╰─ Name 以 v- 开头使用速记时可以省略
