vue3基本语法小结

news/2024/4/20 7:02:10/文章来源:https://blog.csdn.net/m0_58044090/article/details/130347519

/* 
1. 如果不希望有其他的插件提示,可以禁用掉 例如 uni-app,小程序的插件
2. 希望有自动引进(官方有一些小bug,可能是required,那么就需要手动 import 引进)
    2.1 volar 自带
    2.2 Auto Import
*/

/* 
vue3基本语法小结
vue2 和 vue3 的区别(面试高频题目)
    1. 数据响应式原理重新实现 (ES6 proxy 替代了 ES5 的 Object.defineProperty)
    2. 提供了 composition api, 可以更好的逻辑复用与代码组织
    3. 源码用 typescript 重写, 有更好的类型推导 (类型检测更为严格, 更稳定)
    4. 虚拟 DOM - 新算法 (更快 更小)
    5. 模板可以有多个根元素

1. vite 的构建工具 - 与webpack的区别
vite使用的是原生的 esm 包,不需要编译,它是先起服务,需要用到模块再去加载,所以速度非常快
webpack:需要先把文件编译(es5的浏览器也能识别),编译完成后再起服务,速度较慢

2. 怎么创建vue3的项目
    0. node>=16
    1. npm create vite@latest
    2. npm i 

3. vue3插件介绍
    1. vscode - 安装 volar(兼容vue2,可以值使用volar,把 vuter、vuter 卸载)
    2. 谷歌浏览器 - Vue.js devtools(安装完重启浏览器即可),保证版本在 6.1以上即可(兼容vue2)

语法:
1. setup 生命周期钩子函数 - 实际工作中,请直接使用 setup 语法糖
    1. 组件中 compositionAPI 的起点,业务代码都放里面
    2. setup 会在 beforeCreate 钩子函数之前执行
    3. setup 中不能使用 this, this 指向 undefined
    4. 模版中需要使用的数据和函数,需要在 `setup` 返回
    需要在 script 加上  setup 的属性,开启语法糖
        1. export default 不用自己写
        2. setup() 不需要自己写
        3. return 的数据,不需要自己写

2. reactive - 把传入的 复杂类型的数据,转换成响应式
    把传入的对象,包裹一层 proxy 盒子返回,从而实现响应式
3. ref - 把传入的任意类型,转换成响应式对象,里面有唯一的属性 value 取值

4. computed 计算属性
    语法:computed( ()=>{ // 依赖数据改变时,会自动触发回调函数} )

5. watch 侦听器
    语法: watch(数据源,()=>{},{deep:true})

6. 生命周期
    创建前后没有,直接使用 setup 即可
    beforeMount --- onBeforeMount
    mounted --- onMounted
    beforeUpdate --- onBeforeUpdate
    updated --- onUpdated
    beforeDestory --- onBeforeUnmount
    destoryed --- onUnmounted

7. 父子通信
    父传子
        1. 父传子: <Son :money="money" :car="car"></Son>
        2. 子组件接受: defineProps(['属性名1','属性名2'...])
    子传父
        1. 子组件先定义好要触发的方法: const emit = defineEmits(['方法名1','方法名2'...])
        2. emit('方法名',payload)
        3. 父组件需要绑定好对应方法名 <Son @方法名="父组件的方法">

8. 依赖注入 - provide 和 inject
    作用:实现跨层级的数据(方法)传递
    注意:不能实现兄弟组件通信,所以一般工作中习惯用 pinia
    语法:和localSto非常相似
        1. 组件元素定义和提供
            const money = ref(10000)
            provide('属性名',money) //只需要传递money这个ref响应式对象即可
        2. 后代元素获取
            const money = inject('属性名') //拿到ref响应式对象

9. 模板中 ref 属性的使用
    作用:获取 dom 或者 子组件
    1. 定义一个响应式对象 const domRef = ref(null)
    2. 在模板中(template)通过ref属性绑定,<Son ref="domRef">
    3. 页面渲染完成,就能通过 domRef.value 拿到 dom 或者 子组件
    注意:如果要获取子组件上面的 属性/方法
    必须在子组件上面,自己暴露出去 ---  defineExpose({money,sayHi})
    父组件就能获取到子组件的属性和方法了
    domRef.value.money / domRef.value.sayHi()

10. vue3中废弃了 过滤器,使用函数替代即可
11. toRefs作用:使用 toRefs 可以保证该对象展开的每个属性都是响应式的
        const user = ref({ name: 'zs', age: 18 });
        const { name, age } = toRefs(user.value)

vue3 插件:
1. vue-router
实际工作中对应的版本:vue@3 + vue-router@4 + pinia(vuex5)
创建路由实例,不要背下来,需要用的时候,就复制!!!
1. 安装vue-router
2. 创建路由实例
3. main.js 引进路由实例,通过插件方式挂载到app上( createApp(App).use(router) )

2.vuex(可以用,但是工作中更倾向使用 pinia)

3.pinia:官方的全局状态管理
state 相当于组件中 data
getters 相当于组件中的 computed
actions 相当于组件中的 methods
 pinia 中没有 mutations,无论同步异步,都可以在 actions 完成

pinia创建步骤
1. main.js 通过 createPinia 创建了实例,通过插件挂载到 app
2. defineStore  定义pinia模块的数据,拿到返回的方法,导出去
    export const useTodosStore = defineStore('todos', { 模块的state,getters,actions})
3. 页面使用,值需要引进方法 useTodosStore 即可(一般都是用模块管理)

模块化
1. 每一个模块都划分到对应的文件里面,导出对应的方法,例如 store/modules/todos.js,store/modules/user.js
2. store/index.js 建立总主管,把所有的模块都统一引过来和导出去
    export * from './modules/counter'
    export * from './modules/user'
3. 页面使用,在 总主管 统一导入使用即可
    import { useCounterStore, useUserStore } from './store';
*/

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

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

相关文章

工程化:vite4+vue3里面的less预处理的mixin,when和伪元素的使用研究

本文的起因 项目的重构,之前的语法是scss,新项目选型选的less,两种基本的使用是差不多的,细节方面有很大的差异,今天拎出来重点的细说。。。 区别 *.scss *.less mixin .bg-dp(@number: 0) {

一文讲清莱迪斯 LCMXO2-4000HC-4BG256I 可编程逻辑FPGA 特性及运用领域

一文讲清lattice莱迪斯深力科 LCMXO2-4000HC-4BG256I 可编程逻辑FPGA 特性及运用领域 适用于低成本的复杂系统控制和视频接口设计开发&#xff0c;满足了通信、计算、工业、消费电子和医疗市场所需的系统控制和接口应用。 瞬时启动&#xff0c;迅速实现控制——启动时间小于1m…

AI数字人产品“世优BOTA”发布会落幕,世优科技纪智辉演讲回顾

4月20日&#xff0c;世优科技式发布了新一代AI数字人产品——“世优BOTA”。在会上&#xff0c;世优科技创始人纪智辉介绍了数字人技术、驱动形式、数字人应用、“世优BOTA”的前世今生及未来。 以下是纪智辉的演讲内容概要&#xff1a; 各位嘉宾、各位朋友&#xff1a;大家下…

【 Spring Mybatis 复杂的查询操作 】

文章目录 引言一、参数占位符 #{} 和 ${}二、SQL 注入三、like 模糊查询四、返回类型&#xff1a;resultType 和 resultMap五、多表查询 引言 前面我们已经学会了使用 Mybatis 进行增&#xff0c;删&#xff0c;改操作&#xff0c;也实现了简单的查询操作 &#xff01;下面我们…

mysql主从复制搭建--待实践完善

一、什么是mysql主从复制 参考链接&#xff1a;MySQL主从介绍_rain_yunlx的博客-CSDN博客 Linux下搭建Mysql主从复制详细步骤&#xff08;Mysql版本5.7.35&#xff09;_linuxmysql主从_Direct_的博客-CSDN博客 Linux环境MySQL数据库主从复制保姆级教程_linux主从复制_小学生…

【SWAT水文模型】ArcSWAT输入准备:土地利用/土壤/气象数据

ArcSWAT输入准备&#xff1a;土地利用/土壤/气象数据 1 土地利用数据的处理1.1 数据下载 2 土壤库建立2.1 数据下载 3 气象数据库参考 1 土地利用数据的处理 1.1 数据下载 下载地址如下&#xff1a; 中科院1km土地利用数据 清华大学高精度土地利用数据 2 土壤库建立 SW…

如何将pdf图片文字转换成word 文字word图片怎么转换pdf

如今大家在工作中常常会运用到电脑来办公&#xff0c;电脑的运用大大提高了我们的工作效率&#xff0c;在带来机会的同时同样也带来了新挑战。 pdf图片怎么转换成word文档&#xff1f;PDF格式是一种常用的文档格式&#xff0c;它可以保持文档内容和格式的完整性&#xff0c;但是…

【UE】制作简单的山脉地形

在上一篇博客中&#xff08;【UE】使用Quixel Bridge下载免费贴图&#xff09;&#xff0c;介绍了如何下载免费贴图&#xff0c;本篇博客介绍如何使用这些贴图制作地形贴图。 1. 创建地形 2. 用雕刻工具绘制地形 3. 新建两个材质函数&#xff0c;分别命名为“GrassAuto”、“R…

离散数学期末复习第一章 数理逻辑

离散数学 离散数学是研究各种各样的离散量的结构及离散量之间的关系一门学科&#xff0c;是计算机科学中基础理论的核心课程。 什么是连续变量&#xff1f; 在一定区间内可以任意取值的变量叫连续变量&#xff0c;其数值是连续不断的&#xff0c;相邻两个数值可作无限分割&a…

在线问诊小程序系统方案以及价值

方案价值zlzwgz0127 1.扩大医院流量 a.预约到院 在线展示专家的介绍&#xff0c;更能彰显实力&#xff0c;吸引患者来院就医&#xff0c; 用户可选择在线问诊和预约到院 b.社区团购导流 与我们合作社区团购给医院的体检产品导流 c.专家直播导流 通过专家直播吸引潜在患者…

观察者设计模式(Observer Design Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]

文章目录 概念组成角色相关图示示例代码框架中的运用适用场景 概念 观察者设计模式&#xff08;Observer Design Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种对象间的一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象&#xff0c;当…

机器学习 Rider数据集分析和预测

介绍数据集 ride_id&#xff1a;乘车ID rideable_type&#xff1a;乘车类型 started_at&#xff1a;开始日期 ended_at &#xff1a;结束日期 start_station_name&#xff1a;开始站的名字 start_station_id&#xff1a;开始站的ID end_station_name&#xff1a;结束站的名字 …

内网渗透之横向移动rdpwinrmwinrsspnkerberos

0x00 准备 环境&#xff1a;god.org cs上线 win2008web 提权利用ms14-058 抓取hash和明文密码(当获取到其他主机就重复提权和抓取密码) 扫描存活主机&#xff0c;扫描端口 代理转发-转发上线&#xff0c;生成反向连接木马&#xff0c;绑定监听器&#xff0c;上传至web根目录(方…

中小企业真的需要CRM吗?

如果你的企业没有CRM客户关系管理系统&#xff0c;企业主需要问问自己&#xff0c;他们将利用什么来扩展业务。福布斯进行的研究恰当地表明&#xff0c;充分利用CRM系统的企业可以将销售额提高29%。 中小企业定期产生大量客户&#xff0c;这可能会难以管理。这正是CRM系统在有…

《编码——隐藏在计算机软硬件背后的语言》精炼——第12章(二进制加法器)

“I hear and I forget. I see and I remember. I do and I understand”——Confucius 人类计算二进制数的方法 我们先计算本位的结果&#xff0c;称为加法位&#xff1b;再计算是否进位&#xff0c;称为进位位。 搭建二进制加法器 我们用逻辑门来搭建二进制加法器。它的思想…

高可用消息服务消息一致、可靠性、链路稳定性核心关注点

面临的问题 初期业务主要的场景是直播间的群聊消息以及一小部分的单聊消息。由于是教育场景&#xff0c;所以业务在划分聊天室的时候是以班级为单位进行划分的&#xff0c;假设每个聊天室的人数为500人。 问题一&#xff1a;用户的维护 直播场景的群聊与微信等常见的群聊在用…

OpenPCDet复现过程记录

0、前言 OpenPCDet项目之前我就复现过&#xff0c;一个很优秀的项目&#xff0c;这几天又需要用到这个项目&#xff0c;再次复现遇到了不少问题&#xff0c;特此记录复现的流程 1、环境准备 1.1、前置条件 以下是我安装的版本 CUDA 11.3CUDNN 8.2.1 CUDA和CUDNN安装可以参考…

61 openEuler 22.03-LTS 搭建MySQL数据库服务器-管理数据库用户

文章目录 61 openEuler 22.03-LTS 搭建MySQL数据库服务器-管理数据库用户61.1 创建用户示例 61.2 查看用户示例 61.3 修改用户61.3.1 修改用户名61.3.2 修改用户示例61.3.3 修改用户密码61.3.4 修改用户密码示例 61.4 删除用户示例 61.5 用户授权示例 61.6 删除用户权限示例 61…

c实例练习笔记(拓展)

本博文参考题目的地址看右边----》C技能树 我跟你说&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;c语言有bool类型&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;你是不是百度跟你说没有只有c才有&#xff1f; 是有的&#xff01;&#xf…

统计学 实验5

8.14 总体平均值&#xff08;μ&#xff09;&#xff1a;7.0 cm 总体方差&#xff08;σ&#xff09;&#xff1a;0.03 cm 样本平均值&#xff08;x̄&#xff09;&#xff1a;6.97 cm 样本方差&#xff08;s&#xff09;&#xff1a;0.0375 cm 样本大小&#xff08;n&#xff…