vue3的基本使用(1)

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 = 19let 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.hqwc.cn/news/520003.html

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

相关文章

Vue系列-环境快速搭建

vue环境快速搭建 演示视频 快速搭建Vue开发环境pnpm和yarn 1. 基本信息 作者: GMCY系列: Vue仓库: GitHub | Gitee话题(GitHub): tools \ vue创建时间: 2024/03/02 2. 介绍 功能 批处理文件vue 环境的快速搭建nodejs, npm, pnpm, yarn 自动 下载安装npm, pnpm, yarn 自动 …

CVE-2024-27198 JetBrains TeamCity 身份验证绕过漏洞分析

漏洞简介 JetBrains TeamCity 是一款由 JetBrains 公司开发的持续集成和持续交付服务器。它提供了强大的功能和工具&#xff0c;旨在帮助开发团队构建、测试和部署他们的软件项目 JetBrains TeamCity发布新版本修复了两个高危漏洞JetBrains TeamCity 身份验证绕过漏洞(CVE-20…

企智汇:引领企业项目管理的数字智能化管理系统工具!

随着数字化时代的来临&#xff0c;企业对项目管理的要求也日益增高。面对日益复杂的业务流程和海量数据&#xff0c;如何有效地管理项目、整合资源、优化流程、提高管理效率&#xff0c;成为了摆在企业面前的重要课题。在这样的背景下&#xff0c;专业做了10年项目管理系统的&a…

vsphere虚拟机迁移是灰色如何解决

vsphere虚拟机迁移是灰色如何解决 问题描述&#xff1a; 在vsphere中&#xff0c;迁移虚拟机时迁移按钮是灰色&#xff0c;无法迁移&#xff0c;关机之后也无法迁移 虚拟机按钮为灰色 找到虚拟机存储对应的位置&#xff0c;查询是否有.vmx虚拟机文件 查询中发现有.vmx文件存…

JS使用方式

JS是解释性语言&#xff0c;所以不需要搭建类似C#/Java之类的开发运行环境&#xff0c;因为他们是编译型语言。JS一般运行在浏览器中或者node环境中&#xff0c;这里都是JS引擎的功劳。 node环境使用 推荐使用nvm管理node版本&#xff0c;nrm管理代理地址。 安装node&#xf…

P2241 统计方形(数据加强版) python解法

求n*m网格内矩形的数目 - tenos - 博客园 (cnblogs.com) 法一&#xff08;题解推规律暴力枚举得到&#xff09;&#xff1a; n,mmap(int,input().split()) sqr,rec0,0 #正方形和长方形个数 #以长宽做循环&#xff0c;每次求n*m大小的矩形的个数 #题解是从0开始的&#xff0c;我…

供应链管理(SCM):界面设计全面扫盲,得供应链者得天下

大家伙&#xff0c;我是大千UI工场&#xff0c;专注UI分享和项目接单&#xff0c;本期带来供应链系统的设计分享&#xff0c;欢迎大家关注、互动交流。 一、什么是SCM SCM系统是供应链管理&#xff08;Supply Chain Management&#xff09;系统的缩写。供应链管理是指协调和管…

信号处理--卷积残差网络实现单通道脑电的睡眠分期监测

目录 背景 亮点 环境配置 数据 方法 结果 代码获取 参考文献 背景 人类大约花三分之一的时间睡觉&#xff0c;这使得监视睡眠成为幸福感的组成部分。 在本文中&#xff0c;提出了用于端到端睡眠阶段的34层深残留的Convnet架构 亮点 使用深度1D CNN残差架构&#xff0…

支小蜜校园防欺凌报警系统如何识别霸凌

校园霸凌给受害者带来了深重的心理和身体伤害。为了有效应对这一问题&#xff0c;校园防欺凌报警系统应运而生&#xff0c;其核心技术在于如何准确、迅速地识别霸凌行为。那么校园防欺凌报警系统是如何识别霸凌的呢&#xff1f; 图像识别技术 这些系统利用高清摄像头捕捉校园…

【软件测试】如何申请专利?

一、专利类型 在软件测试领域&#xff0c;可以申请发明专利、实用新型专利和外观设计专利。其中&#xff0c;发明专利是最常见的专利类型&#xff0c;它保护的是软件测试方法、系统和装置等技术方案。 二、申请专利的条件 申请专利需要满足新颖性、创造性和实用性三个条件。…

晶圆上特性表征

测试仪器&#xff1a; 半导体器件表征系统&#xff08;DC&CV&#xff09;&#xff1a;Keysight B1500A 半导体器件分析仪&#xff08;B1500A&#xff09;测量能力&#xff1a; 1.IV、CV、脉冲/动态IV范围为0.1 fA-1 A/0.5 uV-200 V 2.器件、材料、半导体、有源/无源元件的…

MMLU数据集分享

来源: AINLPer公众号&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2024-2-28 自然语言处理&#xff08;NLP&#xff09;模型在特定基准测试上取得了超人的表现&#xff0c;但整体语言理解能力仍远低于人类水平。现有的基准…