vue3的基本使用(1)

news2025/1/21 15:35:36

Vue3的基本使用(1)

  • 初识vue3
    • 1. vue3简介
    • 2. 性能提升
    • 3. 源码升级
  • Vue3的创建
    • 1. vue-cli创建
    • 2. vite创建
  • Composition API的区别(组合式)
  • setup函数
  • 响应式数据
    • 1. ref响应式
    • 2. reactive响应式
  • toRefs与toRef简单介绍

初识vue3

1. vue3简介

  • vue是一款用于构建用户界面的 JavaScript框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。
  • 早在2020年9月18日,vue3发布3.0版本。代号one Piece。官方发布地址,vue2在2023年年底已经停止维护~
  • 无需构建步骤,渐进式增强静态的 HTML
    在任何页面中作为 Web Components 嵌入
    单页应用 (SPA)
    全栈 / 服务端渲染 (SSR)
    Jamstack / 静态站点生成 (SSG)
    开发桌面端、移动端、WebGL,甚至是命令行终端中的界面

2. 性能提升

  • 打包体积减少41%
  • 初次渲染快55%,更新渲染快133%
  • 内存减少54%

3. 源码升级

  • 使用Proxy代替defineProperty来实现响应式
  • 重写虚拟DOM以及Tree-Shaking
  • 最开心的是再也不用使用根标签了
  • 可以更好支持TypeScript

Vue3的创建


项目工程可以分两种方式进行创建,一种是原始的使用vue-cli开发,另一种是官方推荐的基于vite创建项目。

1. vue-cli创建

首先先检查自己@vue/cli的版本,确保在4.5.0以上。没有的话请进行安装或升级~

vue --version # 版本检查

npm i -g @vue/cli # 安装升级

vue create [Your Project Name] # 创建项目

创建时需要选择vue版本,随后cd到相关目录下,执行npm run dev即可运行。

在这里插入图片描述

2. vite创建

相关介绍和创建请移步 👉 另一篇博客

Composition API的区别(组合式)

  • vue2API设计是Options风格配置的;
  • vue3API设计是Composition风格配置的;

Options API的弊端

它的属性、方法、数据是分散在data methods computed中的,若想要增加或者修改一个新功能,需要分别修改这些,维护和复用非常的麻烦。

setup函数

setup函数vue3的一个新配置项,值为一个函数,组件中的所有配置都在这个函数里边。

特点:

  • 函数返回的对象中的内容可以直接在模板中使用。
  • 在函数里边访问thisundefined
  • 会在创造之前调用,领先所有钩子函数。
<template>
    <div class="person">
        <h2>姓名: {{ name }}</h2>
        <h2>年龄: {{ age }}</h2>
        <button @click="changeName">修改名字</button>
        <button @click="changeAge">修改年龄</button>
        <button @click="showTel">查看联系方式</button>    
    </div>
</template>

<script lang="ts">
export default {
    setup() {
        let name = 'Samabc'
        let age = 19
        let tel = '18888885466'
        function changeName() {name = 'Samlyx'}
        function changeAge() {age = 20}
        function showTel() {alert(tel)}
        return { name, age, changeAge, changeName, showTel}
    }
}
</script>

此时的变量还不是响应式处理,点击按钮,页面并没有被响应式修改~

语法糖

  • 每个 *.vue 文件最多可以包含一个 <script setup>
<script lang='ts'>
export default{name='person123'}
</script>
<script lang="ts" setup>
let name = 'Samabc'
let age = 19
let tel = '156168878676'
function changeName() {name = 'Samlyx'}
function changeAge() {age = 20}
function showTel() {alert(tel)}
</script>

你会发现为什么会有两个script标签,显得很繁琐,那么有没有解决办法呢?

当然!可以借助一个插件简化该操作。首先执行下面操作进行插件安装~

npm i vite-plugin-vue-setup-extend -D

其次在vite.config.ts文件里进行引入

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueSetup from 'vite-plugin-vue-setup-extend'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(),vueSetup()],
})

随后我们就可以将script标签修改简化啦~

<script lang="ts" setup name="person123">
let name = 'Samabc'
let age = 19
let tel = '18888844561'
function changeName() {name = 'Samlyx'}
function changeAge() {age = 20}
function showTel() {alert(tel)}
</script>

这样就将两个script整合到一起了~

响应式数据

有两种方式可以定义响应式

  1. ref响应
  2. reactive响应

1. ref响应式

主要涉及的是基本数据类型,同时也可以定义对象型数据。

使用时需要先引入ref组件,随后将需要响应式处理的数据用ref包裹。

<script lang="ts" setup name="person">
import { ref } from 'vue';

let name = ref('Samabc')
let age = ref(19)
console.log(name)
console.log(age)

function changeName() {
    name.value = 'Samlyx'
}
function changeAge() {
    age.value = 20
}
</script>

控制台打印结果如下,这时候我们打印我们的数据,会发现被ref包裹的数据将会变成一个RefImpl对象。而里边的value就是我们所展示的数据,所有我们如果需要修改这个数据,则需要通过调用变量的value属性进行修改才可以。

在这里插入图片描述

2. reactive响应式

ref类似,只不过它只能针对对象类型。如果你需要重新分配一个对象,则会失去响应式,可以使用object.assign进行整体替换。

<script lang="ts" setup name="car">
import {reactive} from 'vue'

let car = reactive({brand:'奔驰',price:100})

function changePrice() {
    car.price += 10
}
</script>

控制台打印如下:会发现被包裹的对象是一个proxy代理。

在这里插入图片描述

toRefs与toRef简单介绍

  • 作用: 创建一个ref对象,其value值指向另一个对象中的某个属性值
  • 语法: const name = toRef(person, ‘name’)
  • 应用:要将响应式对象中的某个属性单独提供给外部使用
  • 其他: toRefs与toRef功能一致,但是可以批量创建多个ref对象,语法: toRefs(person)

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

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

相关文章

阿里云一键登录(号码认证服务)

前言 用户登录原来的登录方式如下 1. 手机号验证码 2. 账号密码 运营觉得操作过于复杂, 因此想引入阿里自动登录的逻辑, 也就是号码认证服务,所以才有了这篇问文章 注: 本文只是记录Java端的实现, app端的请自行查询文档实现 官方资料 文档 : 什么是号码认证服务_号码认证服务(…

Flink学习4 - 富函数 + 数据重分区操作 + sink 操作(kafka、redis、jdbc)

1、富函数 - 函数类接口&#xff0c;可以获取运行环境的上下文&#xff0c;实现更复杂的功能 2、数据重分区操作 3、sink操作 sink - kafka 1、引入kafka的pom依赖 <dependency><groupId>org.apache.flink</groupId> <!--<artifactId>flink-conn…

【漏洞复现】网康科技 NS-ASG 应用安全网关 SQL注入漏洞(CVE-2024-2022)

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

获得店铺的所有商品API接口

使用淘宝淘口令接口的步骤通常包括&#xff1a; 注册成为淘宝开放平台的开发者&#xff1a;在淘宝开放平台网站上注册账号并完成认证。 创建应用以获取API密钥&#xff1a;在您的开发者控制台中创建一个应用&#xff0c;并获取用于API调用的密钥&#xff0c;如Client ID和Clie…

工业以太网交换机助力电力综合自动化系统卓越运行

随着电力行业不断迈向数字化和自动化时代&#xff0c;电力综合自动化系统逐渐成为实现电网智能化管理的核心。在这一复杂而庞大的系统中&#xff0c;工业以太网交换机扮演着至关重要的角色&#xff0c;连接着各种智能设备&#xff0c;实现数据的快速传输和高效管理&#xff0c;…

【python基础学习10课_面向对象、封装、继承、多态】

一、类与对象 1、类的定义 在类的里面&#xff0c;称之为方法。 在类的外面&#xff0c;称之为函数。类&#xff1a;人类&#xff0c;一个族群&#xff0c;是一个群体类的语法规则&#xff1a;class 自定义的类名():属性 -- 变量方法 -- 函数类&#xff0c;首字母大写&#x…

Json web token (JWT)渗透与防御及ctf例题

第三部分的signature签名用来认证签名是否被更改 算法为none是因为开发人员为了更方便的修改&#xff0c;把header部分设置为none&#xff0c;从而不用进行第三部分签名的认证。 注&#xff1a;一定要先切换到jwt_tool目录下面使用 还可以使用-c -d参数使用自带的字典进行爆破密…

如何做代币分析:以 USDC 币为例

作者&#xff1a; lesleyfootprint.network 编译&#xff1a;mingfootprint.network 数据源&#xff1a; USDC Token Dashboard &#xff08;仅包括以太坊数据&#xff09; 在加密货币和数字资产领域&#xff0c;代币分析起着至关重要的作用。代币分析指的是深入研究与代币相…

[IDE工具]Ubuntu18.04 VSCode版本升级

一、下载新版本 https://code.visualstudio.com/Download 二、安装deb sudo dpkg -i code_1.87.0-1709078641_amd64.deb 升级完成&#xff01; 三、问题解决 1. 依赖于 libc6 (> 2.28)&#xff1b;然而&#xff1a;系统中 libc6:amd64 的版本为 2.27-3ubuntu1.6 1.1…

凌鲨客户端架构

客户端架构 客户端使用了tauri作为主框架&#xff0c;通过rust和内置应用(sidecar)为前端界面提供额外能力。 内置应用(sidecar) 应用 相关项目 说明 devc 开发环境容器工具 gitspy 本地git仓库管理工具 grpcutil grpc调用工具 mongo 通讯协议 mongo协议转发工具 …

信息系统项目管理师--范围管理

项⽬范围管理 产品范围&#xff1a;指某项产品、服务或成果所具有的特征和功能。产品范围的完成情况是根据产品需求来衡量的。“需求”是指根据特定协议或其他强制性规范&#xff0c;产品、服务或成果 必须具备的条件或能⼒。 项⽬范围&#xff1a;包括产品范围&#xff0c;是为…

在vue3中使用el-tree-select做一个树形下拉选择器

el-tree-select是一个含有下拉菜单的树形选择器&#xff0c;结合了 el-tree 和 el-select 两个组件的功能。 因为包含了el-tree的功能&#xff0c;我们可以自定义tree的节点&#xff0c;创造出想要的组件 使用default插槽可以自定义节点内容&#xff0c;它的default插槽相当于…

基于扩散模型的图像编辑:首篇综述

AIGC 大模型最火热的任务之一——基于 Diffusion Model 的图像编辑(editing)领域的首篇综述。长达 26 页&#xff0c;涵盖 297 篇文献&#xff01;本文全面研究图像编辑前沿方法&#xff0c;并根据技术路线精炼地划分为 3 个大类、14 个子类&#xff0c;通过表格列明每个方法的…

【golang】26、retry-go 使用示例和源码解析

文章目录 一、使用方法1.1 http 示例1.1.1 retry.Do1.1.2 retry.DoWithData1.1.3 OnRetry1.1.4 根据 error 的类型&#xff0c;决定 delay 的时长1.1.5 自定义 retry function 二、API2.1 Do 执行2.1.1 Do2.1.2 DoWithData 2.2 Delay 策略2.3 错误处理2.3.1 Unwrap2.3.2 Unwrap…

【智能家居】东胜物联ODM定制ZigBee网关,助力能源管理解决方案商,提升市场占有率

背景 本文案例服务的客户是专业从事智能家居能源管理的解决方案商&#xff0c;其产品与服务旨在帮助用户监测、管理和优化能源消耗&#xff0c;以提高能源使用效率。 随着公司的扩张&#xff0c;为了增加市场占有率&#xff0c;他们希望找到更好的硬件服务支持&#xff0c;以…

染色法

染色法&#xff1a;将图中所有的节点都染上颜色1或颜色2&#xff0c;染色规则为相邻节点不能为同一种颜色&#xff0c;即节点 x 若为颜色1则它的相邻节点 y 的颜色为2 时间复杂度&#xff1a;O(nm) 解决问题&#xff1a;判断是否为二分图 二分图&#xff1a;又称作二部图&am…

java之——反射

文章目录 反射的基本概念反射的概念反射的作用 反射的基本信息反射的相关类型Class类Class类中的相关方法newInstabce()getName方法 Field类中的方法getFiled()方法getDeclareField(String name) Constructor类getConstructors()getDeclaredConstructors() Method类getMethods(…

STM32使用标准库编写外部时钟控制oled显示计数(proteus仿真)

这节课的结果是在上节课的基础上更改的&#xff1a;电路图为&#xff1a;用一个开关来模拟外部时钟的高低电平的变化。 当然也可以配置一个外部时钟来模拟&#xff0c;也是可以的&#xff1a; 由于这节课的代码是在上节课的基础上有一点修改而来的&#xff0c;所以就只把更改的…

8、Linux-软件安装:rpm和yum;配置yum阿里云镜像源

一、介绍 Linux安装软件有两种方式&#xff0c; ①rpm&#xff1a;安装已有的安装包&#xff0c;类似于Windows中双击exe的安装包程序 ②yum&#xff1a;拉取远程仓库的文件&#xff0c;类似于python的pip install 区别&#xff1a;假设软件A依赖软件B&#xff0c;软件B依赖…

个推与华为深度合作,成为首批支持兼容HarmonyOS NEXT的服务商

自华为官方宣布HarmonyOS NEXT鸿蒙星河版开放申请以来&#xff0c;越来越多的头部APP宣布启动鸿蒙原生开发&#xff0c;鸿蒙生态也随之进入全新发展的第二阶段。 作为华为鸿蒙生态的重要合作伙伴&#xff0c;个推一直积极参与鸿蒙生态建设。为帮助用户在HarmonyOS NEXT上持续享…