【前端】一文掌握 Vue 3 指令用法(vue3 备忘清单)
文章目录
- 入门
- 介绍
- 创建应用
- 应用实例
- 通过 CDN 使用 Vue
- 使用 ES 模块构建版本
- 模板语法
- 文本插值
- 原始 HTML
- Attribute 绑定
- 布尔型 Attribute
- 动态绑定多个值
- 使用 JavaScript 表达式
- 仅支持表达式(例子都是无效)
- 调用函数
- 指令 Directives
- 参数 Arguments
- 绑定事件
- 动态参数
- 动态的事件名称
- 修饰符 Modifiers
- 指令语法
- 响应式基础
- 声明状态
- 声明方法
- `<script setup>` setup语法糖
- 用 `ref()` 定义响应式变量
- 有状态方法
- 响应式样式
- 响应式进阶 —— watch 和 computed
- 监听状态
- 立即监听状态
- 监听多个值
- 计算状态
- 组件通信
- defineProps
- defineEmits
- defineExpose
- Provide / Inject
- 路由
- 1. 路由的基本使用
- 开启命名空间后,组件中读取state数据
- 开启命名空间后,组件中读取getters数据
- 开启命名空间后,组件中调用dispatch
- 开启命名空间后,组件中调用commit
- 2. 路由的使用
- 3.路由的query
- 跳转路由并携带参数
- 4. 命名路由
- 5.params参数的使用
- 1. 声明接收
- 2. 传递
- 3. 接收
- 6.props的使用
- 7. 编程式路由导航
- 8.缓存路由组件
- 9.新生命周期钩子
- 路由守卫
- 1.前置路由守卫
- 2.后置路由守卫
- 3.独享路由守卫
- 4.组件内路由守卫
- Vue 中使用 TypeScript
- 为组件的 props 标注类型
- Props 解构默认值
- 为组件的 emits 标注类型
- 为 ref() 标注类型
- 为 reactive() 标注类型
- 为 computed() 标注类型
- 为事件处理函数标注类型
- 为 provide / inject 标注类型
- 为模板引用标注类型
- 为组件模板引用标注类型
- 选项式 API 为组件的 props 标注类型
- 选项式 API 为组件的 emits 标注类型
- 选项式 API 为计算属性标记类型
- 选项式 API 为事件处理函数标注类型
- 选项式 API 扩展全局属性
- 类型扩展的位置
- 选项式 API 扩展自定义选项
- API 参考
- 全局 API - 应用实例
- 全局 API - 通用
- 组合式 API - setup()
- 组合式 API - 依赖注入
- 组合式 API - 生命周期钩子
- 组合式 API - 响应式: 工具
- 组合式 API - 响应式: 核心
- 选项式 API - 状态选项
- 选项式 API - 生命周期选项
- 选项式 API - 其他杂项
- 选项式 API - 渲染选项
- 选项式 API - 组件实例
- 选项式 API - 组合选项
- 内置内容 - 指令
- 内置内容 - 组件
- 内置内容 - 特殊 Attributes
- 内置内容 - 特殊元素
- 单文件组件 - 语法定义
- 单文件组件 - \<script setup>
- 单文件组件 - CSS 功能
- 进阶 API - 渲染函数
- 进阶 API - 服务端渲染
- 进阶 API - TypeScript 工具类型
- 进阶 API - 自定义渲染
渐进式 JavaScript 框架 Vue 3 备忘清单的快速参考列表,包含常用 API 和示例
参考:
- Vue 3.x 官方文档
- Vue Router 4.x 官方文档
入门
介绍
Vue 是一套用于构建用户界面的渐进式框架
- Vue 3.x 官方文档 (cn.vuejs.org)
- Vue Router 4.x 官方文档 (router.vuejs.org)
- Vue 2 备忘清单
注意: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, ref } from 'vue'const app = createApp({setup() {const message = ref("Hello Vue3")return {message}}
})
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, ref } = VuecreateApp({setup() {const message = ref("Hello Vue3")return {message}}}).mount('#app')
</script>
使用 ES 模块构建版本
<div id="app">{{ message, ref }}</div>
<script type="module">import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'createApp({setup() {const message = ref("Hello Vue3")return {message}}}).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>
动态绑定多个值
通过不带参数的 v-bind,你可以将它们绑定到单个元素上
<script setup>import comp from "./Comp.vue"import {ref} from "vue"const a = ref("hello")const b = ref("world")
</script><template><comp v-bind="{a, b}"></comp>
</template>
如果你是使用的 setup 语法糖。需要使用 defineprops 声名(可以直接使用a/b)
const props = defineProps({a: String,b: String
})
使用 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- 开头使用速记时可以省略
响应式基础
声明状态
<div>{{ state.count }}</div>
import { defineComponent, reactive } from 'vue';// `defineComponent`用于IDE推导类型
export default defineComponent({// setup 用于组合式 API 的特殊钩子函数setup() {const state = reactive({ count: 0 });// 暴露 state 到模板return {state};},
});
声明方法
<button @click="increment">{{ state.count }}
</button>
import { defineComponent, reactive } from 'vue';export default defineComponent({setup() {const state = reactive({ count: 0 });function increment() {state.count++;}// 不要忘记同时暴露 increment 函数return {state,increment};},
})
<script setup> setup语法糖
<script setup>
import { reactive } from 'vue';const state = reactive({ count: 0 })function increment() {state.count++
}
</script><template><button @click="increment">{{ state.count }}</button>
</template>
setup 语法糖用于简化代码,尤其是当需要暴露的状态和方法越来越多时
用 ref() 定义响应式变量
reactive只能用于对象、数组和 Map、Set 这样的集合类型,对 string、number 和 boolean 这样的原始类型则需要使用ref
import { ref } from 'vue';const count = ref(0);console.log(count); // { value: 0 }
console.log(count.value); // 0
count.value++;
console.log(count.value); // 1
const objectRef = ref({ count: 0 });// 这是响应式的替换
objectRef.value = { count: 1 };
const obj = {foo: ref(1),bar: ref(2)
};
// 该函数接收一个 ref
// 需要通过 .value 取值
// 但它会保持响应性
callSomeFunction(obj.foo);// 仍然是响应式的
const { foo, bar } = obj;
在 html 模板中不需要带 .value 就可以使用
<script setup>
import { ref } from 'vue';const count = ref(0);
</script><template><div>{{ count }}</div>
</template>
有状态方法
import { reactive, defineComponent, onUnmounted }相关文章:
【前端】一文掌握 Vue 3 指令用法(vue3 备忘清单)
文章目录 入门介绍创建应用应用实例通过 CDN 使用 Vue使用 ES 模块构建版本模板语法文本插值原始 HTMLAttribute 绑定布尔型 Attribute动态绑定多个值使用 JavaScript 表达式仅支持表达式(例子都是无效)调用函数指令 Directives参数 Arguments绑定事件动态参数动态的事件名称修…...
visio导出pdf公式变形
情况描述导出为pdf后,mathtype写的公式就变形了 但是导出为png和jpg就是正常 解决方法就是 需要下载一个Adobe Acrobat...
【学习笔记】计算机网络(六)
第6章应用层 文章目录 第6章应用层6.1 域名系统DNS6.1.1 域名系统概述6.1.2 互联网的域名结构6.1.3 域名服务器域名服务器的分区管理DNS 域名服务器的层次结构域名服务器的可靠性域名解析过程-两种查询方式DNS 高速缓存机制 6.2 文件传送协议6.2.1 FTP 概述6.2.2 FTP 的基本工作…...
做一个多级动态表单,可以保存数据和回显数据
<template> <div class"two"> <button class"save" click"saveBtn">保存数据</button> <button class"sd" click"showBtn">回显数据</button> <div class"all" click&quo…...
量子退火与机器学习(2):少量实验即可找到新材料,黑盒优化➕量子退火
使用量子退火和因子分解机设计新材料 这篇文章是东京大学的一位博士生的毕业论文中的主要贡献。 结合了黑盒优化和量子退火,是融合的非常好的一篇文章,在此分享给大家。 https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.2.0133…...
WPF中的Adorner基础用法详解与实例
WPF中的Adorner基础用法详解与实例 Adorner(装饰器)是WPF中一个强大的功能,它允许开发者在现有UI元素之上叠加额外的视觉效果或交互功能,而不会影响原有布局系统。本文将详细介绍Adorner的基础概念、核心用法以及实际应用示例。 …...
【React】基于 React+Tailwind 的 EmojiPicker 选择器组件
1.背景 React 写一个 EmojiPicker 组件,基于 emoji-mart 组件二次封装。支持添加自定义背景 、Emoji 图标选择!并在页面上展示! 2.技术栈 emoji-mart/data 、emoji-mart : emoji 图标库、元数据 tailwindcss: 原子化 CSS 样式库 antd : 组…...
02-Docker 使用
docker:快速构建、运行、管理应用的工具,可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用 1、部署mysql 先停掉虚拟机中的MySQL,确保你的虚拟机已经安装Docker,且网络开通的情况下,执行下面命令即可安装MySQL(注意:若服务器上已经有mysql 占用了330…...
html5时钟升级!支持切换深浅模式 Canvas实现现代化动态时钟
HTML5 Canvas实现现代化动态时钟 这里写目录标题 HTML5 Canvas实现现代化动态时钟项目介绍技术实现1. 项目架构2. Canvas绘图实现2.1 表盘绘制2.2 刻度绘制2.3 指针绘制 3. 动画效果4. 主题切换 项目亮点技术要点总结项目收获改进方向结语 项目介绍 本项目使用HTML5 Canvas技术…...
MOE-1 基本认识
解读一下MOE架构,部分内容图片参考自油管。 首先来简单了解一下什么是MoE(Mixture of Experts,专家混合) MoE(Mixture of Experts)是一种深度学习架构,其核心思想是通过**多个专家网络…...
【C++接入大模型】WinHTTP类封装:实现对话式大模型接口访问
一、类设计概述 近期准备用C做一些大预言模型方面的开发,先期计划实现C调用公共的大模型Web接口,因为之前没做过C的Web开发,经验少,所以对比了一些主流的框架,包括实际测试验证。以下是Windows平台下主流C HTTP库的对…...
MaxEnt物种分布建模全流程;R+ArcGIS+MaxEnt模型物种分布模拟、参数优化方法、结果分析制图与论文写作
融合R语言的MaxEnt模型具有以下具体优势: 数据处理高效便捷 📊强大的数据预处理功能:R语言提供了丰富的数据处理工具,能够轻松完成数据清洗、筛选、转换等操作,为MaxEnt模型提供高质量的输入数据。 🌐自动…...
【银河麒麟高级服务器操作系统 】虚拟机运行数据库存储异常现象分析及处理全流程
更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…...
python leetcode简单练习(2)
20 有效括号 方法思路 要判断一个仅由括号组成的字符串是否有效,可以使用栈这一数据结构。核心思路是遍历字符串中的每个字符,遇到左括号时压入栈中,遇到右括号时检查栈顶的左括号是否匹配。若匹配则弹出栈顶元素,否则返回false。…...
Android BottomNavigationView 完全自定义指南:图标、文字颜色与选中状态
1. 核心功能概述 通过 Material Design 的 BottomNavigationView,你可以轻松实现以下自定义: ✅ 动态切换选中/默认图标 ✅ 自定义选中与默认文字颜色 ✅ 控制文字显示模式(始终显示/仅选中显示/自动隐藏) ✅ 添加动画和高级样…...
Kafka 偏移量
在 Apache Kafka 中,偏移量(Offset)是一个非常重要的概念。它不仅用于标识消息的位置,还在多种场景中发挥关键作用。本文将详细介绍 Kafka 偏移量的核心概念及其使用场景。 一、偏移量的核心概念 1. 定义 偏移量是一个非负整数…...
【NLP】15. NLP推理方法详解 --- 动态规划:序列标注,语法解析,共同指代
动态规划 (Dynamic Programming) 动态规划(Dynamic Programming,简称 DP)是一种通过将问题分解为较小子问题来优化计算效率的技术。它特别适用于优化最优解问题,比如序列标注(sequence tagging)这类任务。…...
文件分享系统--开源的可视化文件共享管理工具
家里有公网,经常要发文件给别人,文件几个G发送还要云盘或者倒手一次才行,所以弄了个文件分享系统,这个是用字节的 AI Trae 写的,反正反复折腾还是弄出来了。东西挺好用,可以拖拽多个文件上传也可以手动添加…...
【力扣刷题实战】寻找数组的中心下标
大家好,我是小卡皮巴拉 文章目录 目录 力扣题目:寻找数组的中心下标 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C) 兄弟们共勉 !!! 每篇前言 博客主页&#…...
LearnOpenGL小练习(QOpenGLWidget版本)
你好,三角形 1.绘制两个彼此相连的三角形 画两个独立的三角形,给出两个三角形顶点,使用GL_TRIANGLES绘图即可。 关键代码 void MyOpenglWgt::initializeGL() {initializeOpenGLFunctions(); // 1. 创建ShaderProgram着色器:加…...
【Easylive】SpringBoot启动类——EasyLiveWebRunApplication
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 这段代码是 Spring Boot 应用的 主启动类,包含了多个关键注解,用于配置和启动整个应用程序。以下是各个部分的详细解析: 1. SpringBootApplication Spri…...
2025 年前端新趋势:拥抱 Web Component 与性能优化
在技术飞速发展的今天,前端开发领域也在持续演进,新的技术和理念不断涌现。2025 年,Web Component 和性能优化无疑是前端开发中值得关注的两大重点,本文将带你深入了解这两大趋势。 Web Component:构建可复用组件的未…...
计算机网络 用deepseek帮助整理的复习资料(一)
### 计算机网络基础知识整理 --- #### **一、网络类型** 1. **局域网 (LAN)** - **定义**:覆盖小范围(如家庭、教室、公司)。 - **特点**:高带宽、低延迟,设备通过交换机互联。 - **示例**࿱…...
基于OpenCV+MediaPipe手部追踪
一、技术栈 1. OpenCV(Open Source Computer Vision Library) 性质:开源计算机视觉库(Library) 主要功能: 图像/视频的基础处理(读取、裁剪、滤波、色彩转换等) 特征检测…...
美甲预约管理系统基于Spring Boot SSM
目录 摘要 1. 引言 1.1 研究背景与意义 1.2 国内外研究现状 2. 系统需求分析 2.1 功能需求 2.2 非功能需求 3. 系统设计与实现 3.1 系统架构设计 3.2 关键技术实现 3.3 系统模块实现 3.3.1店铺管理 3.3.2商品管理 3.3.3用户管理 3.3.4订…...
XXX软件系统研发技术手册模板
《XXX软件系统研发技术手册》 1. 引言 1.1 编写目的 说明手册的编写背景、目标读者及核心价值,例如: 本文档为开发团队提供完整的技术实现指南,涵盖系统设计、开发规范、部署方案等内容 。 1.2 术语定义 微服务:一种架构风格&a…...
AIGC(生成式AI)试用 29 -- 用AI写读书笔记
看了本书《繁荣与衰退》,电子版的。 没了了纸制的感觉,但笔记还是要写的,多少是个意思。 没有最懒,只有更懒,笔记用AI生成试试看。 >> 个人理解 经济增长与全球化挑战交织时期 以“创造性破坏”为核…...
十五届蓝桥杯省赛Java B组(持续更新..)
目录 十五届蓝桥杯省赛Java B组第一题:报数第二题:类斐波那契数第三题:分布式队列第四题:食堂第五题:最优分组第六题:星际旅行第七题:LITS游戏第八题:拼十字 十五届蓝桥杯省赛Java B…...
OpenAI发布的《Addendum to GPT-4o System Card: Native image generation》文件的详尽笔记
Native_Image_Generation_System_Card 文件基本信息 文件名称:《Addendum to GPT-4o System Card: Native image generation》发布机构:OpenAI发布日期:2025年3月25日主要内容:介绍GPT-4o模型中新增的原生图像生成功能ÿ…...
蓝耘平台API深度剖析:如何高效实现AI应用联动
目录 一、蓝耘平台简介 1.1 蓝耘通义大模型 1.2 蓝耘云计算资源 1.3 蓝耘API与微服务 二、 蓝耘平台应用联动场景 2.1 数据采集与预处理联动 2.2 模型推理与后端服务联动 2.3 跨平台联动 三、蓝耘平台注册体验功能 3.1 注册 3.2 体验蓝耘MaaS平台如何使用海螺AI生成视频…...
