Vue3入门大全(持续更新)

什么是Vue3

Vue.js 是一款流行的 JavaScript 前端框架,用于构建交互式的 Web 用户界面。Vue 3 是 Vue.js 的下一个主要版本,是对 Vue 2 的重大更新。Vue 3 在性能、开发体验和扩展性等方面都进行了改进和优化,其中一些重要的变化和功能包括:

  • 更好的性能:Vue 3 在虚拟 DOM 的更新算法和静态树提升等方面进行了优化,提升了渲染性能。

  • Composition API:引入了 Composition API,它提供了一种新的组织组件代码的方式,使得组件逻辑更易于复用和组合,同时也更易于阅读和维护。

  • 更小的包大小:Vue 3 改进了模块化的打包方式,可以减小最终构建产物的大小。

  • Teleport 和 Suspense:引入了 Teleport 和 Suspense 这两个新的内置组件,用于更好地处理组件之间的逻辑和异步加载。

  • 更好的 TypeScript 支持:Vue 3 对 TypeScript 的支持更加完善,提供了更好的类型推导和类型定义。

  • 更好的调试工具:Vue DevTools 工具得到了更新和改进,提供了更好的调试和性能分析功能。

  • 更好的 TypeScript 支持:Vue 3 对 TypeScript 的支持更加完善,提供了更好的类型推导和类型定义。

  • 更好的响应性系统:Vue 3 的响应性系统进行了重写,使得数据的更新和响应更加高效和可预测。

总的来说,Vue 3 在多个方面都进行了改进和优化,使得开发者能够更轻松地构建出性能优异、易维护和可扩展的 Web 应用程序。

初始化Vue3项目

  • 快速上手
  • 前提条件:已安装 18.0 或更高版本的 Node.js

npm create vue@latest
cd <your-project-name>
npm install
npm run dev

Vue3基础写法

组件基础
// vue2 options api 选项式 API
<script>
export default {data() {return {age: 18}}
}
</script>// vue3 composition api 组合式 API
<script>
export default {setup() {const age = 18return {age}}
}
</script>
基础(模板语法、指令、渲染)
<template><div class="about"><!-- 基础 指令 --><h1>This is an about page</h1><div>{{ age }}</div><div>{{ ageRef }}</div><div v-once>{{ ageRef }}</div><div v-memo="[age10]">{{ ageRef }}</div><div v-text="text"></div><!--  click --><div @click="parentClick"><button v-on:click="btn">点击</button><button @click="btn">点击 简写</button><button @[event].stop="btn">点击 方法变量</button></div><!-- bind --><div v-bind:id="id">v-bind{{ id }}</div><div :id="id">v-bind 简写 {{ id }}</div><!-- 样式 --><div><div class="boxBorder" :class="['boxColor', 'boxSize', isBlue ? 'blue' : null]">样式</div></div><!-- v-model --><div><input v-model="input" /><input v-model="input2" /><input v-model.lazy="input" /><input v-model.trim="input" /><input v-model.number="input" /><input v-model.trim.number="input" />{{ input }}{{ input2 }}</div><!-- 循环 --><div><div v-for="(item, index) in list" :key="index">{{ index }}-{{ item }}</div></div></div>
</template>
<!-- 
<script>
// vue2 options api 选项式 API
// export default {
//   data() {
//     return {
//       age: 18
//     }
//   }
// }// vue3 composition api 组合式 API
// export default {
//   setup() {
//     const age = 18
//     return {
//       age
//     }
//   }
// }
</script> 
--><script setup lang="ts">
import { ref } from 'vue'const age: number = 18
const ageRef = ref(18)
const age10 = ref(10)
setTimeout(() => {ageRef.value = 19
}, 1000)
const text: string = '我今天很开心'const btn = () => {console.log('btn')
}
const event = 'click'
const parentClick = () => {console.log('parentClick')
}const id = '123'const isBlue = true// 非响应式
const input = 'input'//响应式 ref reactive
const input2 = ref('input2')const list = ['星期一', '星期二', '星期三']
</script><!-- npm install -D less -->
<style scoped lang="less">
.boxBorder {border: 1px solid yellow;
}
.boxColor {background-color: #eee;
}
.boxSize {width: 200px;height: 200px;
}
.blue {color: blue;
}
@media (min-width: 1024px) {.about {min-height: 100vh;display: flex;align-items: center;}
}
</style>

vue文件中不同标签属性

script标签

setup
每个 *.vue 文件最多可以包含一个 <script setup>。(不包括一般的 <script>)这个脚本块将被预处理为组件的 setup() 函数,这意味着它将为每一个组件实例都执行。<script setup> 中的顶层绑定都将自动暴露给模板。要了解更多细节,请看 <script setup> 的专门文档。
lang
代码块可以使用 lang 这个 attribute 来声明预处理器语言,最常见的用例就是在 <script> 中使用 TypeScript:<script lang="ts">// use TypeScript
</script>

style标签

scoped
当 <style> 标签带有 scoped attribute 的时候,它的 CSS 只会影响当前组件的元素,和 Shadow DOM 中的样式封装类似。使用时有一些注意事项,不过好处是不需要任何的 polyfill。它的实现方式是通过 PostCSS 将以下内容:<style scoped>
.example {color: red;
}
</style><template><div class="example">hi</div>
</template>
转换为:<style>
.example[data-v-f3f3eg9] {color: red;
}
</style><template><div class="example" data-v-f3f3eg9>hi</div>
</template>
子组件的根元素
使用 scoped 后,父组件的样式将不会渗透到子组件中。不过,子组件的根节点会同时被父组件的作用域样式和子组件的作用域样式影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。深度选择器
处于 scoped 样式中的选择器如果想要做更“深度”的选择,也即:影响到子组件,可以使用 :deep() 这个伪类:<style scoped>
.a :deep(.b) {/* ... */
}
</style>
上面的代码会被编译成:.a[data-v-f3f3eg9] .b {/* ... */
}
:::tip 通过 v-html 创建的 DOM 内容不会被作用域样式影响,但你仍然可以使用深度选择器来设置其样式。 :::插槽选择器
默认情况下,作用域样式不会影响到 <slot/> 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。使用 :slotted 伪类以明确地将插槽内容作为选择器的目标:<style scoped>
:slotted(div) {color: red;
}
</style>
全局选择器
如果想让其中一个样式规则应用到全局,比起另外创建一个 <style>,可以使用 :global 伪类来实现 (看下面的代码):<style scoped>
:global(.red) {color: red;
}
</style>
混合使用局部与全局样式
你也可以在同一个组件中同时包含作用域样式和非作用域样式:<style>
/* 全局样式 */
</style><style scoped>
/* 局部样式 */
</style>
作用域样式须知
作用域样式并没有消除对 class 的需求。由于浏览器渲染各种各样 CSS 选择器的方式,p { color: red } 结合作用域样式使用时 (即当与 attribute 选择器组合的时候) 会慢很多倍。如果你使用 class 或者 id 来替代,例如 .example { color: red },那你几乎就可以避免性能的损失。小心递归组件中的后代选择器!对于一个使用了 .a .b 选择器的样式规则来说,如果匹配到 .a 的元素包含了一个递归的子组件,那么所有的在那个子组件中的 .b 都会匹配到这条样式规则。
less
lang 在任意块上都能使用,比如我们可以在 <style> 标签中使用 Sass <style lang="scss">$primary-color: #333;body {color: $primary-color;}
</style>
注意对不同预处理器的集成会根据你所使用的工具链而有所不同,具体细节请查看相应的工具链文档来确认

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

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

相关文章

通过 CLI 和引入的方式使用 React:基础入门

使用React 有两种使用方式&#xff0c;主要有以下几个原因: 灵活性和适应性: 引入的方式可以让开发者在现有的 HTML 页面中快速引入 React,无需设置完整的项目环境。这适合小型或原型项目。 CLI 方式则更适合用于构建大型复杂的 React 应用程序,因为它提供了更完整的项目结构和…

探索 ChatGPT:解读 AI 对话的魔力(文末推荐一款AI工具聚合平台,可免费体验)

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;个人主页&#xff1a;hacker707的csdn博客 &#x1f4ac;推荐一款AI工具聚合平台&#x1f449;Hulu AI 探索 ChatGPT&#xff1a;解读 AI 对话的魔力 ChatGPT 的魅力如何使用 C…

JVM修炼之路【10】- 垃圾回收器和垃圾回收算法

垃圾回收算法 我们先简要看一下 四种主要的垃圾回收算法 看到这不禁感慨一下 人家1960年 都搞出GC算法了 太强了 评价标准 既然有这么多算法 那就跟各个牌子的游戏本一样 有个比较&#xff0c;这里我们重点介绍一下 垃圾回收算法的评价标准 这几个标准非常重要是 是后面理解很…

springCloudAlibaba集成sentinel实战(超详细)

一、Sentinel介绍 1. 什么是Sentinel Sentinel是阿里开源的项目&#xff0c;提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 分布式系统的流量防卫兵&#xff1a; 随着微服务的普及&#xff0c;服务调用的稳定性变得越来越重要。Sentinel以“流…

你知道 Java 线程池的原理吗?

Java线程池是用于管理和复用线程的机制&#xff0c;它可以帮助开发者有效地管理线程的生命周期和资源&#xff0c;并提高应用程序的性能和稳定性。 1. 线程池概述 在计算机科学中&#xff0c;线程池是一种可用来执行异步任务的线程队列。它主要包含以下几个组成部分&#xff…

python连接mysql数据库并将dataframe的数据插入表中

代码中连接的sql表为"20230411_hangzhuanlie"&#xff0c;表结构如下&#xff1a; 代码如下&#xff08;按需修改用户名、库名等即可&#xff09;&#xff1a; import pymysql import pandas as pd from sqlalchemy import create_enginehost 127.0.0.1:3306/ user_…

科研学习|论文解读——基于旅游知识图谱的游客偏好挖掘和决策支持(IPM,2023)

原文题目 Mining tourist preferences and decision support via tourism-oriented knowledge graph 摘要 目前,旅游管理研究的重点是通过对异构用户生成的内容进行广泛分析,来理解旅游偏好的波动,制定有针对性的发展策略。然而,鉴于在线景点评论涉及过多的混合和无形维度…

【51单片机入门记录】IIC总线协议 EEPROM存储器AT24C02应用

目录 一、AT24C20相关函数操作流程 &#xff08;0&#xff09;根据第十五届蓝桥杯初始iic.c进行的初步修改&#xff08;便于编写后续函数&#xff09; &#xff08;1&#xff09;AT24C20存数据操作流程及代码 &#xff08;2&#xff09;AT24C02读数据操作流程及代码 &#…

一、OpenMIPS指令集CPU的ori指令的实现

前言 根据“自己动手写CPU”这本书学习&#xff0c;自己动手实现一个MIPS指令集的CPU。 本文章实现了一个ori指令即“或”操作的五级流水线&#xff0c;后续会持续添加其他指令完善此CPU。 文章作为学习笔记持续更新&#xff0c;源代码也在github上持续更新 项目源码https://…

MySQL 行锁和表锁是什么?区别,作用等学习总结

一、所谓‘锁’ 是什么 个人理解&#xff0c;所谓的锁就是为了保证数据库数据操作的一致性而产生的一种机制&#xff0c;即我们可能有很多数据&#xff0c;但是当我们有多个人或者多个线程或会话对同一条数据或同一批数据执行操作时&#xff0c;可能大家都要修改这一部分数据&…

头歌-机器学习 第1次实验 Python机器学习软件包Scikit-Learn的学习与运用

第1关&#xff1a;使用scikit-learn导入数据集 scikit-learn包括一些标准数据集&#xff0c;不需要从外部下载&#xff0c;可直接导入使用&#xff0c;比如与分类问题相关的Iris数据集和digits手写图像数据集&#xff0c;与回归问题相关的波士顿房价数据集。 以下列举一些简单…

JAVA面试八股文之数据库

MySQL面试题 MySQL 存储引擎架构了解吗&#xff1f;CHAR 和 VARCHAR 的区别是什么&#xff1f;索引是越多越好嘛&#xff1f;MySQL数据库中空值&#xff08;null&#xff09;和空字符串&#xff08;&#xff09;的区别&#xff1f;SQL 中 on 条件与 where 条件的区别&#xff1…

mySql数据库学习003-多表查询

多表查询 创建数据表&#xff1a;班级表与学生表 create table if not exists class(id tinyint unsigned primary key auto_increment,name varchar(20) not null,description varchar(255),createAt timestamp default current_timestamp,updateAt timestamp default curre…

面试算法-171-翻转二叉树

题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 解 class Solution {public TreeNode invertTree(TreeNode root) {if (root n…

Leetcode【双指针法】

目录 一、left right在一个循环里 二、两个指针在各自的循环里 三、slow fast追逐型 四、slow fast条件型 双指针法常用与题型&#xff1a;数组、字符串、链表、N数之和 一、left right在一个循环里 left right在一个循环里。 left和right移动需要条件&#xff0c;一般是向…

腾讯云4核8G服务器多少钱?4核8G能干啥?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

【2024年5月备考新增】冲刺(1)《第四版教材十五矩阵》

所谓十五矩阵,就是十大管理,五大过程组 【高项】信息系统项目管理师教程(第4版)十五矩阵知识领域项目管理过程组启动过程组规划过程组执行过程组监控过程组收尾过程组项目整合管理制定项目章程制订项目管理计划指导与管理项目工作监控项目工作结束项目或阶段管理项目知识实…

前端代码优化--computed

随便记录一下 主要是通过计算属性来简化和优化代码。在 Vue 中&#xff0c;计算属性是一种方便的工具&#xff0c;可以让你根据依赖状态的变化来动态计算衍生值。在这个例子中&#xff0c;我们使用计算属性 formattedCommunicationType 来根据 workDetail.realTimeItemDeviceDT…

node.js常用命令大全

命令用法nodenode [文件名]&#xff1a;运行指定的 Node.js 脚本文件&#xff1b; node --version&#xff1a;显示当前安装的 Node.js 版本号&#xff1b; node -h 或 node --help&#xff1a;显示 Node.js 的帮助信息。npmnpm install [模块名]&#xff1a;安装指定的 Node.j…

Scala之函数Day-2

Scala 函数(Function) 概述 将一段逻辑进行封装便于进行重复使用&#xff0c;被封装的这段逻辑就是函数。在Scala中&#xff0c;必须通过def来定义函数 基本语法 def 函数名(参数列表) : 返回值类型 {函数体return 返回值 }案例 // 案例&#xff1a;定义函数计算两个整数的…