当前位置: 首页 > news >正文

基本认识vue3

一、基本搭建

项目搭建

使用 最新的 Vue3 + TS + Vite项目

执行命令

(本项目采用如下方式)

npm create vite@latest my-vite-app --template vue-ts

或者
在这里插入图片描述

运行项目

npm install
npm run dev

项目搭建初始化目录

在这里插入图片描述

新搭建的项目可能会遇到个问题,比如

在这里插入图片描述
这种情况代码本身没有问题,程序能正常执行

但是编辑器却会出现提示,这个问题是语法提示插件的问题,vue2.x之前都是使用vetur插件,vue3.x之后更换成volar插件,可以更好的支持TS,以及有类型推导
所以,安装了这个插件

在这里插入图片描述
之后,删除app.vue中的其它无用代码,最终页面如下:
在这里插入图片描述

二、vue3项目main.js文件发生的变化

在这里插入图片描述
核心代码:createApp(App).mount(‘#app’) = createApp(根组件).mount(‘public/index.html中的div容器’)

vue3.0中按需导出了一个createApp

全局定义属性值(axios为例)

vue2 的写法

main.js 中

import Vue from 'vue'
import App from './App.vue'
import axios from '@/utils/request.js'
Vue.prototype.$axios = axios
new Vue({render: h => h(App),
}).$mount('#app')// 或者
import api from './api' // 导入api接口
Vue.prototype.$api = api
Vue.prototype.$abc = 111

页面上

this.$api.user...
let abc = this.$abc   //111

vue3写法

main.js 中

globalProperties官方提供的在全局挂载方法和属性,代替了Vue2中的Vue.prototype

const app = createApp(App)
//全局配置
app.config.globalProperties.foo = 'bar'

页面上

// mounted中 (和2.0中一样)但是3.0中很少使用mounted
let abc = this.foo //bar

三、vue3中的app单文件不再强制要求必须有根元素

<template><div><a href="https://vuejs.org/" target="_blank"><img src="./assets/vue.svg" class="logo vue" alt="Vue logo" /></a></div><HelloWorld msg="Vite + Vue" />
</template>

四、vue3编写组件的几种方式

1.选项式写法

<template><div>{{num3}}</div>
</template>
<script>
import { ref } from "vue";
export default {props: {testProps: {type: Number,default: () => {return 888;}}},setup(props, context) {console.log("setup的props", props);console.log("testProps", props.testProps);console.log("setup的context", context);const num3 = ref(1);return { num3 };},data() {return {};},methods: {},mounted() {}
};
</script>

2.组合式写法: setup vue3的语法糖

<template><div>{{num}}</div>
</template>
<script setup>
import { ref } from "vue";
const num = ref(123);
</script>

3.JSX写法:使用defineComponent来书写

<template><div><div> {{ count }}</div><button @click="addcount">点击加一</button></div>
</template>
<script>
import { defineComponent } from "vue";
export default defineComponent({data() {return { count: 1 };},methods: {addcount() {this.count++;}}
});
</script>

五、Vue 组合式 API 生命周期钩子

在这里插入图片描述
因为 setup 是围绕 beforeCreate 和 created 生命周期钩子运行的,所以不需要显式地定义它们。换句话说,在这些钩子中编写的任何代码都应该直接在 setup 函数中编写。

这些函数接受一个回调函数,当钩子被组件调用时将会被执行:
在 Vue3 组合 API 中实现生命周期钩子函数可以在 setup() 函数中使用带有 on 前缀的函数:

import { onBeforeMount, onMounted } from 'vue';
export default {setup() {onBeforeMount(() => {console.log('component beforeMount!');})onMounted(() => {console.log('component mounted!');// 组件被挂载时,我们用 onMounted 钩子记录一些消息})}
};

六、定义方法

const handleOk  = () => {}
function handleOk() {}

七、ref:创建一个响应式的数据对象

返回值是一个对象,且只包含一个 .value 属性。
在 setup() 函数内,由 ref() 创建的响应式数据返回的是对象,所以需要用 .value 来访问。

第一种写法

<script setup lang="ts">
import { ref } from 'vue'
// 定义简单的数据
const dataTest = ref(111)
console.log('dataTest', dataTest)
console.log('dataTest-value', dataTest.value)
</script>

打印结果如下:
在这里插入图片描述

在Vue3中数据代理可以使用单一数据了,并且也改进了数据代理的方式,使用的是Proxy完成了数据代理, Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。

即使是Vue3中使用的Proxy的代理方式也不能进行普通数据的代理,所以当调用Ref的时候其实仍然创建了一个Proxy对象,并且Vue帮你给这个对象了一个value属性,属性值就是你定义的内容,改变的时候监视的改变依然是通过Proxy的数据劫持来进行响应式的处理,而模板中()使用的时候Vue会默认调用对应的value属性,从而完成模板中的内容的直接调用

例如:

<template><h1>{{ msg }}</h1><div class="card"><button type="button" @click="count++">count is {{ count }}</button><p>我是dataTest数据:  {{dataTest}} </p></div>
</template>

展示效果为:

在这里插入图片描述

第二种写法

<script setup lang="ts">
import { ref } from 'vue'
const testFn = () => {// 定义简单数据const num = ref(1233);// 定义复杂数据const num2 = ref({ b: "我是num2中的b", c: "我是num3" });console.log(num2.value); //Proxy {a: '我是num2'}return {numVal: num.value,num2Val: num2.value,num2Valb: num2.value.b,};
}
console.log('testFn', testFn())
</script>

在这里插入图片描述

八、reactive 创建响应式复杂数据数据

reactive就是用来完善ref的获取时直接省去.value,只能定义复杂数据类型的数据

<script setup lang="ts">
import { ref, reactive } from 'vue'// 定义对象
const reactiveTestObj = reactive({name: '章三',age: 18
})
// 定义数组
const reactiveTestArr = reactive([{ text: 'javascript'},{ text: 'java'},{ text: 'c#'}
])
const reactiveFnTest = () => {return {reactiveTestObj, // reactiveTestObj Proxy {name: '章三', age: 18}reactiveTestArr // reactiveTestArr Proxy {0:{...},1:{...},2:{...}}}
}
console.log('reactiveFnTest', reactiveFnTest())
</script>

在这里插入图片描述

好了,vue3基本认识就先介绍到这里吧,下期针对 ref 和 reactive 做个比较,关于vue3 的父子通信也会在之后的链接中更新哦~,本次参考链接 点击查看

相关文章:

基本认识vue3

一、基本搭建 项目搭建 使用 最新的 Vue3 TS Vite项目 执行命令 &#xff08;本项目采用如下方式&#xff09; npm create vitelatest my-vite-app --template vue-ts或者 运行项目 npm install npm run dev项目搭建初始化目录 新搭建的项目可能会遇到个问题&#xf…...

HTTP/HTTPS协议认识

写在前面 这个博客我们要要讨论的是协议,主要是应用层.今天我们将正式认识HTTP和HTTPS,也要认识序列化和反序列化,内容比较多,但是不难 再谈协议 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层,我们要完成下面三个步骤. sock的使用 定制…...

【VScode】远程连接Linux

目录标题1. 安装扩展插件2. 在Linux上操作3. 确定Linux的IP地址4. 远程连接到Linux5. 实现免密码登录使用 VScode 远程编程与调试的时有会用到插件 Remote Development&#xff0c;使用这个插件可以在很多情况下代替 vim 直接远程修改与调试服务器上的代码&#xff0c;同时具备…...

QT/C++调试技巧:内存泄漏检测

文章目录内存泄漏方案一方案二&#xff1a;CRT调试定位代码位置方法1方法2其它问题方案三&#xff1a;使用vs诊断工具方案四&#xff1a;使用工具VLD&#xff08;Visio Leak Detector&#xff09;方案五Cppcheck内存泄漏 内存泄漏&#xff1a;指的是在程序里动态申请的内存在使…...

【贪心算法】一文让你学会“贪心”(贪心算法详解及经典案例)

文章目录前言如何理解“贪心算法”&#xff1f;贪心算法实战分析1.分糖果2.钱币找零3.区间覆盖内容小结最后说一句&#x1f431;‍&#x1f409;作者简介&#xff1a;大家好&#xff0c;我是黑洞晓威&#xff0c;一名大二学生&#xff0c;希望和大家一起进步。 &#x1f47f;本…...

【字体图标iconfont】字体图标部署流程+项目源码分析

今日&#xff0c;心情甚是烦闷&#xff0c;原由… 公司项目需要将字体图标做一些细微的调整&#xff0c;我一人分析了许久&#xff0c;看不大懂源码的逻辑&#xff0c;产生了自我怀疑。深吸一口气&#xff0c;重新鼓起勇气&#xff0c;调整心境&#xff0c;一下子豁然开朗&…...

2023最全的Web自动化测试介绍(建议收藏)

做测试的同学们都了解&#xff0c;做Web自动化&#xff0c;我们主要用Selenium或者是QTP。 有的人可能就会说&#xff0c;我没这个Java基础&#xff0c;没有Selenium基础&#xff0c;能行吗&#xff1f;测试虽然属于计算机行业&#xff0c;但其实并不需要太深入的编程知识&…...

jvm_根节点枚举安全点安全区域

1、可达性分析可以分成两个阶段 根节点枚举 从根节点开始遍历对象图 前文我们在介绍垃圾收集算法的时候&#xff0c;简单提到过&#xff1a;标记-整理算法(Mark-Compact)中的移动存活对象操作是一种极为负重的操作&#xff0c;必须全程暂停用户应用程序才能进行&#xff0c;像这…...

fabric(token-erc-20链码部署)

确保自己已经安装了fabric。没有安装的可以参考我之前的教程fabric中bootstrap.sh到底帮助我们干了什么&#xff1f;&#xff08;手动执行相关操作安装fabric2.4&#xff09;_./bootstrap.sh_小小小小关同学的博客-CSDN博客小伙伴们在跟着官方示例来安装fabric的时候都是相当烦…...

C语言基础——流程控制语句

文章目录一、流程控制语句 -- 控制程序的运行过程 9条&#xff08;一&#xff09;、条件选择流程控制语句&#xff1a;if语句if……else……语句if……else if……语句switch语句&#xff08;二&#xff09;、循环流程控制语句&#xff1a;for语句while语句do while……语句co…...

WinForm | C# 界面弹出消息通知栏 (仿Win10系统通知栏)

ApeForms 弹出消息通知栏功能 文章目录ApeForms 弹出消息通知栏功能前言全局API通知栏起始方向通知排列方向通知栏之间的间隔距离无鼠标悬停时的不透明度消息通知窗体的默认大小示例代码文本消息提示栏文本消息提示栏&#xff08;带选项&#xff09;图文消息提示栏图文消息提示…...

刷题之最长公共/上升子序列问题

目录 一、最长公共子序列问题&#xff08;LCS&#xff09; 1、题目 2、题目解读 ​编辑 3、代码 四、多写一题 五、应用 二、最长上升子序列问题&#xff08;LIS&#xff09; 1、题目 2、题目解读 3、代码 四、多写一道 Ⅰ、题目解读 Ⅱ、代码 一、最长公共子序列问题&…...

【数据结构】千字深入浅出讲解栈(附原码 | 超详解)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;C语言实现数据结构 &#x1f4ac;总结&#xff1a;希望你看完…...

自动驾驶V2X

1 SoC MDM9250 2 设备网络节点 mhi_swip0 rmnet_mhi0 3 网络协议栈log打印控制 include/linux/netdevice.h ethtool -s eth0 msglvl [level] ethtool -s eth0 msglvl 0x6001 4 URLs MHI initial design review https://lore.kernel.org/lkml/001601d52148$bd852840$388f78c0$c…...

零基础自学网络安全/渗透测试有哪些常见误区?

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…...

ConvMixer:Patches Are All You Need

Patches Are All You Need 发表时间&#xff1a;[Submitted on 24 Jan 2022]&#xff1b; 发表期刊/会议&#xff1a;Computer Vision and Pattern Recognition&#xff1b; 论文地址&#xff1a;https://arxiv.org/abs/2201.09792&#xff1b; 代码地址&#xff1a;https:…...

day10—编程题

文章目录1.第一题1.1题目1.2思路1.3解题2.第二题2.1题目2.2涉及的相关知识2.3思路2.4解题1.第一题 1.1题目 描述&#xff1a; 给定一个二维数组board&#xff0c;代表棋盘&#xff0c;其中元素为1的代表是当前玩家的棋子&#xff0c;0表示没有棋子&#xff0c;-1代表是对方玩…...

如何测量锂电池的电量

锂电池在放电时我们有时需要知道电池的实时电量&#xff0c;如电池电量低了我们就需要及时给锂电池充电&#xff0c;避免电池过度放电。我手里的这个就是个单节锂电池电量显示模块&#xff0c;只需要将这个模块接到锂电池的正负极即可显示电量。这个模块的电量分为四档&#xf…...

菜鸟刷题Day6

⭐作者&#xff1a;别动我的饭 ⭐专栏&#xff1a;菜鸟刷题 ⭐标语&#xff1a;悟已往之不谏&#xff0c;知来者之可追 一.链表内指定区间反转&#xff1a;链表内指定区间反转_牛客题霸_牛客网 (nowcoder.com) 描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转…...

DecimalFormat格式化显示数字

DecimalFormat 是 NumberFormat 的一个具体子类&#xff0c;用于格式化十进制数字&#xff0c;可以实现以最快的速度将数字格式化为你需要的样子。 DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充&#xff0c; # 表示只要有可能就…...

cpu中缓存简介

一级缓存是什么&#xff1a; 一级缓存都内置在CPU内部并与CPU同速运行&#xff0c;可以有效的提高CPU的运行效率。一级缓存越大&#xff0c;CPU的运行效率越高&#xff0c;但受到CPU内部结构的限制&#xff0c;一级缓存的容量都很小。 CPU缓存&#xff08;Cache Memory&#xf…...

【数据结构】二叉树的遍历以及基本操作

目录 1.树形结构 1.概念 2.二叉树 2.1概念 2.2 两种特殊的二叉树 2.3二叉树的存储 2.4二叉树的基本操作 1.手动快速创建一棵简单的二叉树 2.二叉树的遍历 (递归) 3.二叉树的层序遍历 4.获取树中节点的个数 5.获取叶子节点的个数 6.获取第K层节点的个数 7.获取二叉…...

若依框架 --- ruoyi 表格的设置

表格 字典值转换 (1) 方式1&#xff1a;使用字典枚举的方式 var isDownload [[${dict.getType(YES_OR_NO)}]];{field : isDownload,title : 是否允许下载,formatter: function(value, row, index) {return $.table.selectDictLabel(isDownload, value);} }, (2) 方式2&…...

“两会”网络安全相关建议提案回顾

作为新一年的政治、经济、社会等发展的“风向标”&#xff0c;今年“两会”在3月13日顺利闭幕。在今年“两会”期间&#xff0c;多位人大代表也纷纷围绕网络安全、数据安全的未来发展做了提案和建议。 01 “两会”网络安全相关建议和提案回顾 建议统筹智能网联汽车数据收集与共…...

一篇文章带你真正了解接口测试(附视频教程+面试真题)

目录 一、什么是接口测试&#xff1f; 二、为什么要做接口测试&#xff1f; 三、如何开展接口测试&#xff1f; 四、接口测试常见面试题 一、什么是接口测试&#xff1f; 所谓接口&#xff0c;是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据…...

C/C++每日一练(20230325)

目录 1. 搜索插入位置 &#x1f31f; 2. 结合两个字符串 &#x1f31f; 3. 同构字符串 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 搜索插入位置 给定一个排序数…...

Linux操作系统ARM指令集与汇编语言程序设计

一、实验目的1.了解并掌握ARM汇编指令集2.应用ARM指令集编写一个程序操控开发板上的LED灯二、实验要求应用ARM汇编指令集编写程序&#xff0c;实现正常状态下开发板上的LED灯不亮&#xff0c;按下一个按键之后开发板上的LED灯进入流水灯模式。三、实验原理四个LED灯的电路如下图…...

计网之HTTP协议和Fiddler的使用

文章目录一. HTTP概述和fidder的使用1. 什么是HTTP2. 抓包工具fidder的使用2.1 注意事项2.2 fidder的使用二. HTTP协议格式1. HTTP请求格式1.1 基本格式1.2 认识URL1.3 方法2. 请求报头关键字段3. HTTP响应格式3.1 基本格式3.2 状态码一. HTTP概述和fidder的使用 1. 什么是HTT…...

sql性能优化:MS-SQL(SQL Server)跟踪日志信息结果列字段说明,MSSQL的列字段说明(column)

sql性能优化&#xff1a;MS-SQL&#xff08;SQL Server&#xff09;跟踪日志信息结果列字段说明&#xff0c;MSSQL的列字段说明&#xff08;column&#xff09; 参考&#xff1a; SQL:BatchCompleted 事件类 | Microsoft Learn SQL 跟踪 | Microsoft Learn sp_trace_setevent (…...

DNS主从复制

#前提准备&#xff1a;关闭SElinux 关闭防火墙 时间同步 #环境说明&#xff1a;Centos7 #ip地址&#xff1a;dns-master&#xff1a;10.0.0.100 dns-slave&#xff1a;10.0.0.103 web&#xff1a;10.0.0.101 主DNS服务配置 1.安装软件包&#xff1a; yum install bind -…...

wordpress给通知用户邮件/花生壳免费域名注册

当你插入U盘的时候&#xff0c;如果电脑上突然跳出一个窗口&#xff0c;提示无法访问你的U盘&#xff0c;遇到这种情况不要慌&#xff0c;下面教大家如何把U盘里的文件给修复好。点击加载图片一、取消隐藏空的驱动器当我们使用电脑时&#xff0c;插入U盘却没有反应&#xff0c;…...

中小学教师兼职做网站/购买友情链接网站

最新版英文第三版 已有中文第二版 《ggplot2&#xff1a;数据分析与图形艺术》&#xff0c;即ggplot2: Elegant Graphics for Data Analysis&#xff0c;目前网上介绍的比较多的是第二版且已经有中文版&#xff0c;Hadley Wickham等目前已经更新到了第三版&#xff0c;做了很多…...

保健品网站dede模板/有网站模板怎么建站

a 10 b 11 c 12 d 13 e 14 f 15 16位进制加减运算 3D25H - 05C3H 3762H 3D25-05C3 5-322-C2-12 (162-12) 6 (由于2-12不够减,所以向前借1 即16)D-5(13-1-5) 7(13-1是因为2-12不够而被借走了一位)3-03 结果为&#xff1a;3762H 3D25 3 13 2 5 05C3 0 5 12 3 -…...

中国网站建设网/百度开户流程

http://www.mcu123.com/news/Article/web/uc/200609/2223.html转载于:https://www.cnblogs.com/stoneresearch/archive/2008/10/21/4336881.html...

浙江疫情/兰州网络优化seo

标准霍夫变换的原理就是把图像空间转换成参数空间(即霍夫空间),例如霍夫变换的直线检测就是在距离 -角度空间内进行检测。圆可以表示为: ( x − a ) 2 + ( y − b ) 2 = r 2 (x-a)^2+(y-b)^2 = r^2...

佛山正规网站建设哪家好/北大青鸟培训机构官网

IC卡解密工具 PN532工具XP 爆破版 By:lookyour 传送门 //2017/4/25 IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送http://www.52pojie.cn/thread-602693-1-1.htmlIC卡解密从零开始学2 解密工具PN532-mfoc-mfcuk-GUIhttp://www.52pojie.cn/thread-604402-1-1.html//当了…...