Vue3快速入门/Vue3基础速通

Vue3

渐进式的javascript框架,我们可以逐步引入vue的功能

官方文档
Vue.js中文手册
你可以借助 script 标签直接通过 CDN 来使用 Vue:

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

通过 CDN 使用 Vue 时,不涉及“构建步骤”。这使得设置更加简单,并且可以用于增强静态的 HTML 或与后端框架集成。但是,你将无法使用单文件组件 (SFC) 语法。

简单的web页面不需要使用复杂的vue框架构建即可呈现出精美的效果,因此我们先使用cdn的方式来学习vue,以后逐步过渡到完整框架。

vue一般有两种开发方式,一种是组件式,一种是组合式。vue3官方文档主推组合式的编写,因此我们也使用组合式开发

组合式学习

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="vue.global.js"></script>
</head>
<body><div id="app"><h1>{{ message }}</h1><p>{{ web.title }} {{ web.url }}</p></div><script>Vue.createApp({// setup选项,用于设置响应式数据和方法等setup(){const message = Vue.ref('Hello Vue!')// 这是个对象,可以直接在模板中使用const web = Vue.reactive({title: 'Vue.js',url: 'https://cn.vuejs.org/'    })return {message: message,// web: webweb}}}).mount('#app')</script></body>
</html>

在开发时我们也可以使用模块化开发的方式大家看上面的代码示例,每一个vue方法前都有一个Vue.,比如Vue.createApp,然而我们可以直接

import { createApp , reactive} from './vue.esm-browser.js'

即可不加Vue.来直接编写vue代码,也不用导入

  <script src="vue.global.js"></script>

因此两种方式视自己喜好选择即可。

接下来我们将逐步认识各个方法

ref 与 reactive

在这里插入图片描述

ref是一个引用,修改使用.value, 而reactive则直接修改对应属性即可

ref也可以存储数组

绑定事件 v-on 简写 @

在这里插入图片描述

显示和隐藏 v-show

<p v-show="show">...</p>
当show为false就隐藏

条件渲染 v-if

<p v-if="show"> ... </p>
不适用于频繁切换显示状态以下是更好的用法
<p v-if="show < 1000">用户较少</p>
<p v-else-if="show > 1000 && show < 10000 ">用户较多</p>
<p v-else>用户很多</p>

动态属性绑定v-bind

<input type="text" :value="web.url">
这样文本框的值就是web.url的值
简写直接用:
这个绑定可以用在class, img, src等用法,实现其值的动态绑定

放在li中为每行元素设置title和key

:title=“value.name”

:key=“value.id”

v-for 遍历数组和对象

<p>遍历数组或对象</p>
<ul><li v-for="value in arr">{{ value }}</li>
</ul>
const arr = Vue.reactive([1,2,3,4,5])

双向数据绑定 v-model

单向数据绑定:当数据发生改变时,视图会自动更新,但是用户手动修改input的值,数据不会自动更新

双向数据绑定会自动更新数据的值

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="vue.global.js"></script>
</head><body><div id="app"><h3>文本框 {{ data.text }}</h3><h3>单选框 {{ data.radio }}</h3><h3>多选框 {{ data.checkbox }}</h3><h3>下拉框 {{ data.select }}</h3><h3>记住密码 {{ data.remember }}</h3>双向数据绑定 <input type="text" v-model="data.text"><br><input type="radio" value="male" v-model="data.radio"><input type="radio" value="female" v-model="data.radio"><br><input type="checkbox" value="apple" v-model="data.checkbox"> 苹果<input type="checkbox" value="banana" v-model="data.checkbox"> 香蕉<input type="checkbox" value="orange" v-model="data.checkbox"> 橘子<br><select v-model="data.select"><option value="">请选择</option><option value="apple">苹果</option><option value="banana">香蕉</option><option value="orange">橘子</option></select><br><input type="checkbox" v-model="data.remember"> 记住密码</div><script>Vue.createApp({// setup选项,用于设置响应式数据和方法等setup() {const data = Vue.reactive({text: 'hello',radio: '',checkbox: [],select: '',remember: false})return {data}}}).mount('#app')</script></body></html>

v-model修饰符

之前的双向数据绑定是实时渲染的(默认形式),现在我们不需要实时渲染,只要按enter等才改

  • 在失去焦点或enter后修改 v-model.lazy
  • 输入框的值转为数字类型 v-model.number
  • 去除首尾空格 v-model.trim

以上是常用的三种

渲染数据 v-text 和 v-html

v-html可以将数据解析为html格式,而v-text会解析为纯文本格式

计算属性computed

在这里插入图片描述
可以避免重复计算

侦听器watch

监听元素的变化

setup(){const date = reactive({year:2023,month:10})watch(date.year, (newValue, oldValue))=>{console.log("new:", newValue, "old:", oldValue);}
}
// 注意,json中对象和数组是通过引用传递的,所以old也是修改后的值,如果是普通变量,则会通过赋值传递,会保留old值

自动监听watchEffect
在这里插入图片描述
将不需要手动设定监听的对象

接下来我们做一个图片轮播案例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="vue.global.js"></script>
</head><body><div id="app"><h1>{{number}}</h1><h1>imageSrc: {{imageSrc}}</h1><img :src="imageSrc" style="width: 300px;"> <br><button @click="next">+</button><button @click="prev">-</button><ul><li v-for="value in 6"><button  @click="jump(value)">{{value}}</a></li></ul></div><script>Vue.createApp({// setup选项,用于设置响应式数据和方法等setup() {const number = Vue.ref(1)// 这是个对象,可以直接在模板中使用const next = () => {number.value++if (number.value == 6) {number.value = 1}}const prev = () => {number.value--if (number.value == 1) {number.value = 6}}const web = Vue.reactive({title: 'Vue.js',url: 'https://cn.vuejs.org/'})const imageSrc = Vue.computed(() => {return `image/${number.value}.jpg`})const jump = (value) => {number.value = value}return {number,next,// web: webimageSrc,prev,jump,web}}}).mount('#app')</script></script>
</body></html>

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[人机交互]理解界面对用户的影响

零.重点 – 什么是情感因素 – 富有表现力的界面 – 用户的挫败感 – 拟人化在交互设计中的应用 – 虚拟人物&#xff1a;代理 一.什么是情感方面 情感是指某事物对心理造成的一种状态 二.计算机科学中存在的两个相关的研究领域 2.1情感计算 机器如何能感知其他代理的情感&…

Ubuntu22.04及以上版本buildroot SIGSTKSZ 报错问题

本文提供一种解决 Buildroot SIGSTKSZ 报错途径 解决途径来源参考&#xff1a;Buildroot error when building with Ubuntu 21.10 其出现原因在于 GNU C Library 2.34 release announcement&#xff1a; Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ. When _DYNAMIC_STACK_SIZE_SOU…

Spark处理过程-案例数据清洗

&#xff08;一&#xff09;需求说明 准备十条符合包含用户信息的文本文件&#xff0c;每行格式为 姓名,年龄,性别&#xff0c;需要清洗掉年龄为空或者非数字的行。 例如&#xff1a; 张三,25,男 李四,,女 王五,30,男 赵六,a,女 孙七,35,男 周八,40,女 吴九,abc,男 郑十,45,女…

多模态大语言模型arxiv论文略读(六十五)

VS-Assistant: Versatile Surgery Assistant on the Demand of Surgeons ➡️ 论文标题&#xff1a;VS-Assistant: Versatile Surgery Assistant on the Demand of Surgeons ➡️ 论文作者&#xff1a;Zhen Chen, Xingjian Luo, Jinlin Wu, Danny T. M. Chan, Zhen Lei, Jinqi…

五子棋html

<!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8" /> <meta name"viewport" content"widthdevice-width, initial-scale1" /> <title>五子棋游戏</title> <style>bo…

算法训练营第十一天|150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素

150. 逆波兰表达式求值 题目 思路与解法 第一思路&#xff1a; 比较简单 class Solution:def evalRPN(self, tokens: List[str]) -> int:stack []for item in tokens:if item ! and item ! - and item ! * and item ! / :stack.append(item)else:b int(stack.pop())a …

原生 IP(Native IP)

目录 一、核心特点 二、原生 IP 的常见应用 三、原生 IP vs. 数据中心 IP 四、如何获取原生 IP&#xff1f; 五、原生 IP 的优缺点 六、实际案例 原生 IP&#xff08;Native IP&#xff09; 是指由互联网服务提供商&#xff08;ISP&#xff09;直接分配给用户的 IP 地址&…

k8s的pod挂载共享内存

k8s的pod挂载共享内存&#xff0c;限制不生效问题&#xff1a; 注&#xff1a;/dev/shm 是 Linux 系统中用于共享内存的特殊路径。通过将 emptyDir 的 medium 设置为 Memory&#xff0c;可以确保 /dev/shm 正确地挂载到一个基于内存的文件系统&#xff0c;从而实现高效的共享内…

DOCX转PDF怎么操作最简单?快速将DOCX转换为专业PDF文档

在日常办公或学习中&#xff0c;我们经常需要将 Word 文档&#xff08;.docx格式&#xff09;转换为 PDF 文件。这不仅有助于保持文档格式的一致性&#xff0c;还能确保接收者无需特定软件即可查看文件内容。本文将详细介绍几种常见的方法来实现从 DOCX 到 PDF 的转换&#xff…

VUE+ElementUI 使用el-input类型type=“number” 时,取消右边的上下箭头

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在项目中有时候需要输入框的type“number”&#xff0c;这个时候&#xff0c;输入框的右边就会出现两个按钮&#xff0c;这两个按钮可以递增/递减&#xff0c;但是这样输入框看上去就不太美观&#x…

深入浅出理解常见的分布式ID解决方案

目录 UUID 自增ID 数据库多主模式 号段模式 Redis 雪花算法 百度 UIDgenerator 美团Leaf 滴滴TinyID 实战中的分布式ID生成器&#xff01;保障数据唯一性的核心组件 怎么编写Lua脚本是关键 怎么执行&#xff1f; 总结 分布式ID在构建大规模分布式系统时扮演着至关…

技术视界 | 青龙机器人训练地形详解(一):如何创建一个地形

机器人强化学习中的地形训练是利用强化学习算法让机器人在不同地形环境中通过试错学习最优行为策略的过程&#xff0c;通过环境建模、策略学习与优化等环节&#xff0c;使机器人能够自主适应复杂多变的地形&#xff0c;提高其移动效率、稳定性和自主性&#xff0c;减少人为干预…

【SGL】Scatter-Gather List内存传输技术

文章目录 1. What is SGL&#xff1f;2. sgl内存传输的原理2.1 核心思想2.2 sgl数据结构2.3 摘链和挂链 3. 零拷贝技术3.1 问题背景3.2 零拷贝的核心思想及实现方式 4. sgl在存储行业的应用 1. What is SGL&#xff1f; sgl&#xff08;Scatter-Gather List&#xff09;内存传…

10.idea中创建springboot项目_jdk17

10.idea中创建springboot项目_jdk17 一、前期准备 安装与配置&#xff1a; 确保已安装 IntelliJ IDEA配置好 JDK17 二、创建 Maven 项目 新建项目&#xff1a; 点击 File → New → Project&#xff0c;选择左侧的 Maven。填写项目名称&#xff08;如 demo&#xff09;、存…

如何使用极狐GitLab 软件包仓库功能托管 ruby?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Ruby gems (BASIC ALL) WARNING:Ruby gems 软件包库正在开发中&#xff0c;由于功能有限&#xff0c;尚未准备好…

LeetCode 热题 100 131. 分割回文串

LeetCode 热题 100 | 131. 分割回文串 大家好&#xff0c;今天我们来解决一道经典的回溯算法问题——分割回文串。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求将一个字符串 s 分割成若干个子串&#xff0c;使得每个子串都是回文串&#xff0c;并返回所有可能的分割…

〖 Linux 〗操作系统进程管理精讲(2)

文章目录 1、环境变量基本概念常见环境变量查看环境变量方法测试 PATH测试 HOME和环境变量相关的命令环境变量的组织方式<p align"center">main 函数的三个参数通过代码获得环境变量通过系统调用获取环境变量环境变量通常是具有全局属性的 2、程序地址空间2.1 …

vite:npm 安装 pdfjs-dist , PDF.js View 示例

pdfjs-dist 是 Mozilla 的 PDF.js 库的预构建版本&#xff0c;能让你在项目里展示 PDF 文件。下面为你介绍如何用 npm 安装 pdfjs-dist 并应用 pdf.js 和 pdf.worker.js。 为了方便&#xff0c;我将使用 vite 搭建一个原生 js 项目。 1.创建项目 npm create vitelatest pdf-v…

精品,架构师总结,MySQL 5.7 查询入门详解

文章目录 MySQL 5.7 查询入门详解一、数据库与表基础操作1.1 连接数据库1.2 创建数据库1.3 使用数据库1.4 创建数据表1.5 表结构查看 二、SELECT基础查询2.1 全列查询2.2 指定列查询2.3 别名使用2.4 去重查询2.5 表达式计算 三、WHERE条件查询3.1 比较运算符3.2 逻辑运算符3.3 …

P48-56 应用游戏标签

这一段课主要是把每种道具的游戏Tag进行了整理与应用 AuraAbilitySystemComponentBase.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "AbilitySystemComponent.h"…