vue3 基础知识 01

加油! 😘

文章目录

  • 一、vue3 带来的变化(源码)
  • 二、vue3 带来的变化(性能)
  • 三、vue3 带来的变化(新的API)
  • 四、声明式 和 命令式
  • 五、template
  • 六、data
  • 七、methods


一、vue3 带来的变化(源码)

  1. 源码通过monorepo的形式来管理代码

    • Mono : 单个
    • Repo :repository 仓库
    • 主要是将许多项目的代码存储在同一个 repository 中
    • 这样做的目的是多个包本身互相独立,可以有自己的功能逻辑,单元测试等;同时又可以在一个仓库下方便管理
    • 而且模块划分的更加清晰,可维护性、可扩展性更强
  2. 源码使用TS来进行重写

    • 在 vue2中,vue 用 Flow 进行类型检测
    • 在 vue3中,vue 的源码全部用ts进行重构,并且vue 本身对 ts 支持也更好了

二、vue3 带来的变化(性能)

  1. 使用 proxy 进行数据劫持

    • 在vue2中,使用object.defineProperty 来劫持数据的getter和setter方法
    • 但是在对对象属性进行删除和添加的是时候无法监听,无法劫持 (提供了$set 和 $delete
    • vue3开始用proxy来实现数据劫持
  2. 删除了一些没必要的API

    • 移除了实例上的 $on $off $once
    • 移除了一些特性:filter , 内联模版等
  3. 包括编译方面的优化

    • 生成 Block Tree、slot编译优化、diff 算法优化等

三、vue3 带来的变化(新的API)

  1. 由 Options API 到Composition API

    • 在vue2中使用 options api 来描述对象,会有data,props,methods,computed ,生命周期等这些选项,存在比较大的问题就是多个逻辑不在同一个地方,代码的内聚性很差,比如:created 中会使用某个method 来修改data的数据
    • composition API 可以将相关的代码放到同一处进行处理,不要在多个Options 之间查找
  2. Hook 函数增加代码的复用性

    • 在vue2 中通过mixins 在多个组件之间共享逻辑,因为mixins 由一大堆的options 组成,并且多个mixins 会存在命名冲突的问题
    • vue3 使用hook 将一部分独立逻辑抽取出来,而且还可以做到响应式

四、声明式 和 命令式

声明式更关注结果, 命令式更关注于过程

命令式

  • 当我们想要完成一个操作的时候,需要通过一条js编写一个代码,作为给浏览器的指令,编写的过程就是 命令式编程

声明式

  • 我们不关心过程,根据模板编写代码,官方帮助我们声明数据,声明方法,绑定数据

五、template

在vue 页面里我们经常看到这个标签,其实这个在js里也给我们提供了,使用template浏览器不会渲染,他是留给浏览器操作用的,当我们采用下载或者CDN 方式引入vue时,需要在使用这个标签的时会赋值一个id , 其实是 vue 通过queryselecter执行获取,使用这个好处就是:浏览器不会再渲染

六、data

data 属性需要传入一个函数,因为这里是为了 收集响应式数据,data 返回的对象 会被vue 的响应式系统劫持,之后对该对象修改或者访问进行处理

七、methods

他的属性是一个对象,在对象里定义很多方法,这些方法被绑定到template中
可以通过this关键字来直接访问到data中返回的对象属性
但是不能用箭头函数?

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

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

相关文章

Practices9(双指针)|283. 移动零、11. 盛最多水的容器、15. 三数之和

283. 移动零 1.题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,…

chrome、edge、Firefox关闭音量提醒控件显示

文章目录 1. Chrome2. edge3. firefox 1. Chrome 在地址栏输入: chrome://flags/#hardware-media-key-handling 将Hardware Media Key Handling的状态设为Disabled 2. edge 在地址栏输入 edge://flags/#hardware-media-key-handling 将Hardware Media Key Handling的状态…

第二十三章 原理篇:Pix2Seq

大夏天我好像二阳了真是要命啊。 现在找到工作了,感觉很快乐,但是也有了压力。 《论你靠吹牛混进公司后该怎么熬过试用期》 希望自己能保持学习的习惯!加油! 参考教程: https://arxiv.org/pdf/2109.10852.pdf https://…

高级进阶多线程——多任务处理、线程状态(生命周期)、三种创建多线程的方式

Java多线程 Java中的多线程是一个同时执行多个线程的进程。线程是一个轻量级的子进程,是最小的处理单元。多进程和多线程都用于实现多任务处理。 但是,一般使用多线程而不是多进程,这是因为线程使用共享内存区域。它们不分配单独的内存区域…

Nginx负载均衡以及keepalived高可用实验

Vip 10.1.122 Keepalived-master 10.1.1.132Keepalied-backup 10.1.1.133Realserver_1 10.1.1.136Realserver_2 10.1.1.137 四台机器上安装nginx,编译安装的话需要另外安装pcre包支持,安装在/usr/local/nginx Keepalived-master 和backu…

【网络编程·网络层】IP协议

目录 一、IP协议的概念 二、IP协议的报头 1、四位首部长度 2、16位总长度(解包) 3、8位协议(分用) 4、16位首部校验和 5、8位生存时间 6、32位源IP和32位目的IP 7、4位版本/8位服务类型 8、16位标识 9、3位标志 10、1…

go练习 day02

go中使用mongodb实现增删改查 连接mongodb yaml配置 mongodb:uri: mongodb://localhost:27017初始化连接 package confimport ("context""fmt""time""github.com/spf13/viper""go.mongodb.org/mongo-driver/mongo""…

基于kettle实现pg数据定时转存mongodb

mogodb 待创建 基于kettle实现pg数据定时转存mongodb_kettle 实时迁移 mongodb_呆呆的私房菜的博客-CSDN博客

MFC29-30天 补充中间遇到的一些小问题

宏定义中的#和##的含义&#xff1a; #include <Windows.h> #include <tchar.h> #include <iostream> #define Test(x,y) x##y //自动连接 xy #define T2(x) #x //自动转为字符串 "x"int main() {auto p Test(Message, Box);(*p)(NULL, _T(T2(Hel…

SQLSTATE[42000]: this is incompatible with sql_mode=only_full_group_by in

执行 SELECT *FROM test WHERE id>1 GROUP BY name having AVG(age)>10 ORDER BY id desc limit 1 提示错误 Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause…

C# winform 布局操作组件介绍

Winform布局 布局的2个属性 Anchor:锁定位置 Dock&#xff1a;填充位置 一般Dock是与容器控件配合使用 布局的一些控件 TableLayoutPanel&#xff1a;表格容器 每个表格只能放一个控件 要放置多个时可以在每个表格里面添加一个Panel&#xff08;也可以是其他的容器&#x…

git一次错误merge的回滚

场景&#xff1a;提交到sit的代码&#xff0c;结果解决冲突merge了DEV的代码&#xff0c;所以要回滚到合并之前的代码 &#xff08;原因是我再网页上处理了冲突&#xff0c;他就自动merge了,如图—所以还是idea处理冲突&#xff0c;可控&#xff09; 方式二&#xff1a; &…

✅最新!自然指数中国科研机构百强名单,出炉!

【SciencePub学术】8 月 9 日&#xff0c;自然指数官网发布了最新的中国科研机构百强名单。名单根据各大机构2022年在自然科学领域的论文贡献份额进行排名。 其中&#xff0c;中国科学院以2053.76的论文贡献份额&#xff0c;位列榜首&#xff1b;中国科学院大学和中国科学技术…

PAT1044 Shopping in Mars

个人学习记录&#xff0c;代码难免不尽人意。 做了这么多题难得本题不看答案一遍过&#xff0c;很是激动。 Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the pa…

c++ | win vscode

vscode 适合新手做一些简单的单个的编译和调试 新手适合去配置c 环境&#xff0c;尤其是当涉及复杂一点的编程&#xff0c;如多文件、多线程&#xff0c;在调试的时候会头大&#xff0c;要求会高一点 但怎么说呢&#xff1f; c 编译和调试是最接近实际开发环境的&#xff0c;与…

06-2_Qt 5.9 C++开发指南_自定义对话框及其调用

本篇介绍到的对话框及其调用实例较为复杂但十分详细&#xff0c;如果做了解可以先参考&#xff1a;QT从入门到实战x篇_13_模态和非模态对话框创建。 文章目录 1. 对话框的不同调用方式2. 对话框QWDialogSize 的创建和使用2.1 创建对话框QWDialogSize2.2 对话框的调用和返回值 …

css内容达到最底部但滚动条没有滚动到底部

也是犯了一个傻狗一样的错误 &#xff0c;滚动条样式是直接复制的蓝湖的代码&#xff0c;有个高度&#xff0c;然后就出现了这样的bug 看了好久一直以为是布局或者overflow的问题&#xff0c;最后发现是因为我给这个滚动条加了个高度&#xff0c;我也是傻狗一样的&#xff0c;…

Vuex 使用教程

Vuex 各子模块的内部结构及作用 这是vuex的内部代码结构&#xff0c;所有的子模块都是一样的 state&#xff1a;存放数据状态&#xff1b; action&#xff1a;指派 mutation &#xff1b; mutation&#xff1a;修改state里面的状态&#xff1b; getter&#xff1a;侧重于对数据…

Mongodb:业务应用(2)

需求&#xff1a; 1、获取保存到mongodb库中的搜索记录列表 2、实现删除搜索记录接口 保存搜索记录数据参考上篇Mongodb&#xff1a;业务应用&#xff08;1&#xff09;_Success___的博客-CSDN博客 获取记录列表 1、创建controller package com.heima.search.controller.v1;…

模拟队列(c++题解)

实现一个队列&#xff0c;队列初始为空&#xff0c;支持四种操作&#xff1a; push x – 向队尾插入一个数 xx&#xff1b;pop – 从队头弹出一个数&#xff1b;empty – 判断队列是否为空&#xff1b;query – 查询队头元素。 现在要对队列进行 MM 个操作&#xff0c;其中的…