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

vue:vue2与vue3的区别

一、背景

vue2是指的2.X

vue3是指的3.0以及更新的版本(3.2版本在script标签里可以写setup,极大的简化了开发)

本文对比两者区别。

二、官网

生命周期选项 | Vue.js

API 参考 | Vue.js

Vue.js - 渐进式 JavaScript 框架 | Vue.js

Vue.js

Vue.js - The Progressive JavaScript Framework | Vue.js

三、区别

3.1、生命周期

生命周期选项 | Vue.js

生命周期变化较大,需要认真学习。有vue2的基础很容易学会。

序号vue2详细
1beforeCreate在实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用。
2created在实例创建完成后被立即同步调用。在这一步中,实例已完成对选项的处理,意味着以下内容已被配置完毕:数据侦听、计算属性、方法、事件/侦听器的回调函数。然而,挂载阶段还没开始,且 $el property 目前尚不可用。
3beforeMount

在挂载开始之前被调用:相关的 render 函数首次被调用。

该钩子在服务器端渲染期间不被调用。

4mounted

实例被挂载后调用,这时 el 被新创建的 vm.$el 替换了。如果根实例挂载到了一个文档内的元素上,当 mounted 被调用时 vm.$el 也在文档内。

注意 mounted 不会保证所有的子组件也都被挂载完成。如果你希望等到整个视图都渲染完毕再执行某些操作,可以在 mounted 内部使用 vm.$nextTick

5beforeUpdate

在数据发生改变后,DOM 被更新之前被调用。这里适合在现有 DOM 将要被更新之前访问它,比如移除手动添加的事件监听器。

该钩子在服务器端渲染期间不被调用,因为只有初次渲染会在服务器端进行。

6updated

在数据更改导致的虚拟 DOM 重新渲染和更新完毕之后被调用。

当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态。如果要相应状态改变,通常最好使用计算属性或 watcher 取而代之。

注意,updated 不会保证所有的子组件也都被重新渲染完毕。如果你希望等到整个视图都渲染完毕,可以在 updated 里使用 vm.$nextTick

该钩子在服务器端渲染期间不被调用。

7activated

被 keep-alive 缓存的组件激活时调用。

该钩子在服务器端渲染期间不被调用。

8deactivated

被 keep-alive 缓存的组件失活时调用。

该钩子在服务器端渲染期间不被调用。

9beforeDestroy

实例销毁之前调用。在这一步,实例仍然完全可用。

该钩子在服务器端渲染期间不被调用。

10destroyed

实例销毁后调用。该钩子被调用后,对应 Vue 实例的所有指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁。

该钩子在服务器端渲染期间不被调用。

11

errorCaptured

2.5.0+新增

在捕获一个来自后代组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播。
vue2生命周期钩子-API — Vue.js
序号vue3详细
1onMounted()

注册一个回调函数,在组件挂载完成后执行。

组件在以下情况下被视为已挂载:

1、其所有同步子组件都已经被挂载 (不包含异步组件或 <Suspense> 树内的组件)。

2、其自身的 DOM 树已经创建完成并插入了父容器中。注意仅当根容器在文档中时,才可以保证组件 DOM 树也在文档中。

这个钩子通常用于执行需要访问组件所渲染的 DOM 树相关的副作用,或是在服务端渲染应用中用于确保 DOM 相关代码仅在客户端执行。

这个钩子在服务器端渲染期间不会被调用。

2onUpdated

在组件因为响应式状态变更而更新其 DOM 树之后调用。

父组件的更新钩子将在其子组件的更新钩子之后调用。

这个钩子会在组件的任意 DOM 更新后被调用,这些更新可能是由不同的状态变更导致的。如果你需要在某个特定的状态更改后访问更新后的 DOM,请使用 nextTick() 作为替代。

这个钩子在服务器端渲染期间不会被调用。

3onUnmounted

在组件实例被卸载之后调用。

一个组件在以下情况下被视为已卸载:

1、其所有子组件都已经被卸载。

2、所有相关的响应式作用 (渲染作用以及 setup() 时创建的计算属性和侦听器) 都已经停止。

可以在这个钩子中手动清理一些副作用,例如计时器、DOM 事件监听器或者与服务器的连接。

这个钩子在服务器端渲染期间不会被调用。

4onBeforeMount

在组件被挂载之前被调用

当这个钩子被调用时,组件已经完成了其响应式状态的设置,但还没有创建 DOM 节点。它即将首次执行 DOM 渲染过程。

这个钩子在服务器端渲染期间不会被调用。

5onBeforeUpdate

在组件即将因为响应式状态变更而更新其 DOM 树之前调用。

这个钩子可以用来在 Vue 更新 DOM 之前访问 DOM 状态。在这个钩子中更改状态也是安全的。

这个钩子在服务器端渲染期间不会被调用。

6onBeforeUnmount

在组件实例被卸载之前调用。

当这个钩子被调用时,组件实例依然还保有全部的功能。

这个钩子在服务器端渲染期间不会被调用。

7onErrorCaptured

在捕获了后代组件传递的错误时调用。

错误可以从以下几个来源中捕获:

1、组件渲染;2、事件处理器;3、生命周期钩子;4、setup() 函数;5、侦听器;6、自定义指令钩子;7、过渡钩子;

这个钩子带有三个实参:错误对象、触发该错误的组件实例,以及一个说明错误来源类型的信息字符串。

你可以在 errorCaptured() 中更改组件状态来为用户显示一个错误状态。注意不要让错误状态再次渲染导致本次错误的内容,否则组件会陷入无限循环。

这个钩子可以通过返回 false 来阻止错误继续向上传递。请看下方的传递细节介绍。

8onRenderTracked

当组件渲染过程中追踪到响应式依赖时调用。

这个钩子仅在开发模式下可用,且在服务器端渲染期间不会被调用。

9onRenderTriggered

当响应式依赖的变更触发了组件渲染时调用。

这个钩子仅在开发模式下可用,且在服务器端渲染期间不会被调用。

10onActivated

若组件实例是 <KeepAlive> 缓存树的一部分,当组件被插入到 DOM 中时调用。

这个钩子在服务器端渲染期间不会被调用。

11onDeactivated

若组件实例是 <KeepAlive> 缓存树的一部分,当组件从 DOM 中被移除时调用。

这个钩子在服务器端渲染期间不会被调用。

12onServerPrefetch

在组件实例在服务器上被渲染之前调用。

如果这个钩子返回了一个 Promise,服务端渲染会在渲染该组件前等待该 Promise 完成。

这个钩子仅会在服务端渲染中执行,可以用于执行一些仅存在于服务端的数据抓取过程。

vue3生命周期钩子-组合式 API:生命周期钩子 | Vue.js

问:setup在哪个生命周期执行?

答:setup函数在beforeCreate生命周期钩子执行之前执行。

3.2、双向绑定数据的原理发生变化

vue2:双向数据绑定是利用了es5 的一个API Object.definepropert() 对数据进行劫持 结合发布订阅模式来实现的。

vue3:使用了es6的proxyAPI对数据进行处理。

相比与vue2,使用proxy API 优势有:
defineProperty只能监听某个属性,不能对全对象进行监听;
可以省去for in 、闭包等内容来提升效率(直接绑定整个对象即可);
可以监听数组,不用再去单独的对数组做特异性操作,vue3可以检测到数组内部数据的变化。

3.3、vue3支持碎片(Fragments)

就是说可以拥有多个根节点

<template><div class="container"><div>fragments-1</div></div><div class="container2"><div>fragments-2</div></div>
</template>

3.4、Composition API

Vue2 与vue3 最大的区别是vue2使用选项类型api(options api),对比vue3合成型api(composition api)。
options api在代码里分割了不同得属性:data,computed,methods等;
composition api能让我们使用方法来分割,相比于options api使用属性来分组,这样代码会更加简便和整洁。

3.5、数据data

vue2是把数据放入data中;
vue3就需要使用一个新的setup()方法,此方法在组件初始化构造得时候触发。
使用以下三个步骤来建立反应性数据:
1、从vue引入reactive;
2、使用reactive() 方法来声明数据为响应性数据;
3、 使用setup()方法来返回我们得响应性数据,从而template可以获取这些响应性数据。

3.6、父子传参不同,setup()函数特性

1、setup()函数接收两个参数:props、context(包含attrs、slots、emit)
2、setup函数是处于生命周期beforeCreated和created俩个钩子函数之前
3、执行setup时,组件实例尚未被创建(在setup()内部,this不会是该活跃实例得引用,即不指向vue实例,Vue为了避免我们错误得使用,直接将setup函数中得this修改成了undefined)

4、与模板一起使用时,需要返回一个对象
5、因为setup函数中,props是响应式得,当传入新的prop时,它将会被更新,所以不能使用es6解构,因为它会消除prop得响应性,如需解构prop,可以通过使用setup函数中得toRefs来完成此操作。
6、父传子,用props,子传父用事件 Emitting Events。在vue2中,会调用this$emit然后传入事件名和对象;在vue3中得setup()中得第二个参数content对象中就有emit,那么我们只要在setup()接收第二个参数中使用分解对象法取出emit就可以在setup方法中随意使用了。
7、在setup()内使用响应式数据时,需要通过 .value 获取

import { ref } from 'vue'
const snow = ref('')
console.log(snow.value)

8、从setup() 中返回得对象上得property 返回并可以在模板中被访问时,它将自动展开为内部值。不需要在模板中追加.value。

9、setup函数只能是同步的不能是异步的。

3.7、实例化

Vue2.x中new出的实例对象,所有的东西都在这个vue对象上,这样其实⽆论你⽤到还是没⽤到,都会跑⼀遍,这样不仅提⾼了性能消耗,也⽆疑增加了⽤户加载时间。

⽽vue3.0中可以⽤ES module imports按需引⼊,如:keep-alive内置组件、v-model指令,等等,不仅我们开发起来更加的便捷,减少 了内存消耗,也同时减少了⽤户加载时间,优化⽤户体验。

3.8、获取props

vue2在script代码块可以直接获取props,vue3通过setup指令传递

vue2:console.log(‘props’,this.xxx)
vue3:setup(props,context){ console.log(‘props’,props) }

最新版本的vue可能做出了修改,可能已经不是这样了,待研究

3.9、watchEffect

Vue3中除了watch,还引入了副作用监听函数watchEffect,用过之后我发现它和React中的useEffect很像,只不过watchEffect不需要传入依赖项。

那么什么是watchEffect呢?

watchEffect它会立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。

computed和watch所依赖的数据必须是响应式的。Vue3引入了watchEffect,watchEffect 相当于将 watch 的依赖源和回调函数合并,当任何你有用到的响应式依赖更新时,该回调函数便会重新执行。不同于 watch的是watchEffect的回调函数会被立即执行,即({ immediate: true })。

3.10、组件通信

序号方式vue2vue3
1父传子propsprops
2子传父

$emit()

emits
3

父传子

$attrsattrs
4子传父$listeners无,合并到了attrs
5父传子provideprovide
6子传父injectinject
7子组件访问父组件$parent
8父组件访问子组件$children
9父组件访问子组件$refexpose && ref
10兄弟传值EventBusmitt

3.11、路由之间的区别

vue2和vue3的区别(由浅入深)_vue2和vue3区别_KinHKin(五年前端)的博客-CSDN博客

3.12、 状态管理

vue2:vuex

vue3:pinia

3.13、vue3.0和vue3.2的区别(同为3.X版本,进步很多)

Vue3.0和Vue3.2的区别和使用_扬扬.的博客-CSDN博客

vue3.2 中 只需要在 script 标签上加上 setup 属性,组件在编译的过程中代码运行的上下是 setup() 函数中。所有ES模块导出都被认为是暴露给上下文的值,并包含在 setup() 返回对象中。
Vue3.0中的setup 是要在 export default 中使用 setup 属性。
Vue3.2在性能的改进在界面渲染的速度上更快依赖也大大减少了以及内存的使用量。

3.14、关于element
vue2使用element ui

Element - The world's most popular Vue UI framework

vue3使用element plus

一个 Vue 3 UI 框架 | Element Plus

四、欢迎交流指正,关注我,一起学习。

参考链接:

Vue2与Vue3的区别你真的知道吗?_哔哩哔哩_bilibili

vue进阶之路:vue3.2-setup语法糖、组合式API、状态库Pinia归纳总结 - 代码天地

vue3.2、vue3和vue2不同之处_前端段的博客-CSDN博客_vue3 vue3.2

vue2和vue3的区别 - 简书

vue2和vue3的区别(由浅入深)_vue2和vue3区别_KinHKin(五年前端)的博客-CSDN博客

相关文章:

vue:vue2与vue3的区别

一、背景 vue2是指的2.X vue3是指的3.0以及更新的版本&#xff08;3.2版本在script标签里可以写setup&#xff0c;极大的简化了开发&#xff09; 本文对比两者区别。 二、官网 生命周期选项 | Vue.js API 参考 | Vue.js Vue.js - 渐进式 JavaScript 框架 | Vue.js Vue.…...

SQL数据库语法

目录 1. 常用数据类型 2. 约束 4. 数据库操作 5. 数据表操作 1. 常用数据类型 int 整型double 浮点数varchar 字符型data 年月日datetime 年月日 时分秒2. 约束 主键 primary key : 物理上存储的顺序(存在真实排序), 主键…...

人机界面艺术设计

人机界面艺术设计 2.1人机界面艺术设计思路 人们经常有意通过某种工具或创造来解决难题&#xff0c;然而这并不意味着人们乐于接受别人或其他事情&#xff0c;他们很难提出问题。在用户使用网页或软件的时候&#xff0c;他们有明确的目标&#xff0c;他们利用电脑来帮助自己达…...

【办公类-19-01-02】办公中的思考——Python,统计教职工的姓名中那些字最多?

背景需求&#xff1a;上一篇计算了教职工的姓氏谁最多&#xff0c;col[0]]这一篇统计教职工的&#xff08;姓氏名字&#xff09;里面哪些字出现最多。材料准备&#xff1a;1、下载所有员工名单写代码。py 包含”姓氏名字“的重字率统计from pandas import DataFrame, Series im…...

HCIP实验1

实验要求 1 R6为isp, 接口IP地址均为公有地址;该设备只能配置IP地址&#xff0c;之后不能冉对其进行其他任何配置; 2 R1-R5为局域网&#xff0c;私有IP地址192.168.1.0/24&#xff0c; 请合理分配; 3 R1, R2, R4,各有两个环回地址; R5; R6各有一个环回地址;所有路由器上环回均…...

一个Bug让人类科技倒退几十年?

大家好&#xff0c;我是良许。 前几天在直播的时候&#xff0c;问了直播间的小伙伴有没人知道「千年虫」这种神奇的「生物」的&#xff0c;居然没有一人能够答得上来的。 所以&#xff0c;今天就跟大家科普一下这个人类历史上最大的 Bug 。 1. 全世界的恐慌 一个Bug会让人类…...

2023王道考研数据结构笔记第四章串

第四章 串 4.1 串的定义 4.1.1 串的相关概念 串&#xff1a;即字符串&#xff08;String&#xff09;是由零个或多个字符组成的有限序列。一般记为S‘a1a2…an’ (n>0) 其中S是串名&#xff0c;单引号&#xff08;注&#xff1a;有的地方用双引号&#xff0c;如Java、C&am…...

【AI绘图学习笔记】深度学习相关数学原理总结(持续更新)

如题&#xff0c;这是一篇深度学习相关数学原理总结文&#xff0c;由于深度学习中涉及到较多的概率论知识&#xff08;包括随机过程&#xff0c;信息论&#xff0c;概率与统计啥啥啥的)&#xff0c;而笔者概率知识储备属实不行&#xff0c;因此特意开一章来总结&#xff08;大部…...

CSGO服务器配置全贴纸插件方法教程

CSGO服务器配置全贴纸插件方法教程 关于插件的警告 一定要了解V社对于CSGO社区服务器的规定&#xff0c;全皮肤插件/全手套插件等&#xff0c;在设置了GSLT的情况下&#xff0c;是有可能被封禁GSLT账号的&#xff08;所以慎用&#xff09; 配置好服务器之后呢&#xff0c;想安…...

Python爬虫——使用socket模块进行图片下载

Python爬虫——使用socket模块进行图片下载什么是socket爬虫的工作流程socket爬取图片为什么能用socket能下载图片socket下载图片和request下载图片的区别使用socket下载一张图片使用socket下载多张图片方法1方法2什么是socket Socket 是一种通信机制&#xff0c;用于实现网络…...

通用游戏地图解决方案设计解析

前言&#xff1a; 在软件开发过程中&#xff0c;我们都希望能设计出一个稳健的&#xff0c;可维护的系统&#xff0c;为了实现这个目的&#xff0c;人们总结出了很多相关的设计原则&#xff0c;比如SOLID原则&#xff0c; KISS原则等等。SOLID每个字母代表了一种设计原则&…...

java @Autowired @Resource @Inject 三个注解的区别

javax.annotation.Resourcejdk 内置的&#xff0c;JSR-250 中的注解。依赖注入通过 org.springframework.context.annotation.CommonAnnotationBeanPostProcessor 来处理。org.springframework.beans.factory.annotation.Autowired org.springframework.beans.factory.annotati…...

「媒体分流直播」媒体直播和传统直播的区别,以及媒体直播的特点

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好直播毋庸置疑已经融入到了我们生活的方方面面&#xff0c;小到才艺&#xff0c;游戏&#xff0c;大到政策的发布&#xff0c;许多企业和机构也越来越重视直播&#xff0c;那么一场活动怎么最大化的进行传播&#xff0c;一是…...

数据是如何在计算机中存储的

我们普通人对于数据存储的认识恐怕大多数都是从自己使用的电脑来的。现在几乎人手一台电脑,而我们的电脑存储着各种各样的文件,比如视频文件、音频文件和Word文档等。这些文件从计算机术语的角度都可以称为数据。 如图1-1所示是Windows 10 “我的电脑”的截图。通过该截图我…...

Day907.分区表 -MySQL实战

分区表 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于分区表的内容。 经常被问到这样一个问题&#xff1a; 分区表有什么问题&#xff0c;为什么公司规范不让使用分区表呢&#xff1f; 一、分区表是什么&#xff1f; 为了说明分区表的组织形式&#xff0c;先创建…...

C++概览:工具链、基础知识、进阶及总结

本篇写给C初学者&#xff0c;作为概览&#xff0c;文中仅包含各方面基础知识&#xff0c;无深入分析。 C基础概念简介 C编译过程示意图 关键词&#xff1a;源文件、预编译、编译、汇编、链接 C工具链总结 cmake项目工程文件是一种中介工程文件&#xff0c;可以转化成其他…...

目标检测中回归损失函数(L1Loss,L2Loss,Smooth L1Loss,IOU,GIOU,DIOU,CIOU,EIOU,αIOU ,SIOU)

文章目录L-norm Loss 系列L1 LossL2 LossSmooth L1 LossIOU系列IOU &#xff08;2016&#xff09;GIOU &#xff08;2019&#xff09;DIOU &#xff08;2020&#xff09;CIOU &#xff08;2020&#xff09;EIOU &#xff08;2022&#xff09;αIOU (2021)SIOU &#xff08;2022…...

JOSN数据转换和解析

文章目录JOSN数据转换和解析内容回顾Map 集合转成 JSON 字符串List 集合转换成 JSON 字符串Ajax 异步和同步异步概念同步概念异步和同步区别异步请求案例同步请求时间格式化旧时间 api 格式化格式化和解析的工具类JSTL 时间格式化JSTL 使用JOSN数据转换和解析 内容回顾 ajax …...

浅析Linux内核中进程完全公平CFS调度

一、前序 目前Linux支持三种进程调度策略&#xff0c;分别是SCHED_FIFO 、 SCHED_RR和SCHED_NORMAL&#xff1b;而Linux支持两种类型的进程&#xff0c;实时进程和普通进程。实时进程可以采用SCHED_FIFO 和SCHED_RR调度策略&#xff1b;普通进程则采用SCHED_NORMAL调度策略。从…...

安装 RustDesk 服务器 (适用 Rocky Linux, CentOS, RHEL 系列发行版)

环境&#xff1a;Rocky Linux 9.1 1. 安装 Docker Engine 可以参考 [[linux-docker-rocky-install]] https://cc01cc.com/2023/03/02/linux-docker-rocky-install/英文可以参考官方文档 Install Docker Engine on RHEL https://docs.docker.com/engine/install/rhel/ 2. 安装…...

23种设计模式-策略模式

策略模式是一种设计模式&#xff0c;它允许在运行时选择算法的行为。它定义了算法家族&#xff0c;分别封装起来&#xff0c;让它们之间可以互相替换&#xff0c;此模式让算法的变化独立于使用算法的客户端。在本文中&#xff0c;我们将深入探讨策略模式的概念和实际应用&#…...

C#开发的OpenRA的游戏主界面怎么样创建

通过前面加载界面布局数据,可以把整个界面逻辑的数据加载到内存, 但是这些数据怎么显示出来,又是没有定义的。比如前面定义了多个界面的布局, 又是怎么样知道需要显示哪一个界面? 现在就来解决这个问题,其实整个游戏都是可以通过yaml文件进行配置的, 所以我们需要从yaml…...

考研还是工作?两战失败老道有话说

老道入职第一周自我介绍谈谈考研谈谈工作新的启程自我介绍 大家好&#xff01;在下是一枚考研失败两次的自认为聪明能干的有点小帅的实则超级垃圾的三非名校毕业的自动化渣男。大一下就加入实验室&#xff0c;在实验室焊板子、画板子、培训、打比赛外加摸鱼&#xff1b;参加过…...

引用是否有地址的讨论的

说在前头&#xff0c;纯属个人理解&#xff0c;关于引用是否有地址&#xff0c;实际上并没有一个很统一的说法&#xff0c; C标准没有规定一个引用是否需要占用一块内存。 这里引用知乎“C 中引用是一块内存的标记&#xff0c;那引用本身有地址吗_百度知道 (baidu.com)”里面的…...

1、JAVA 开发环境搭建 - JDK 的安装配置

文章目录一、下载 JDK81、官网地址&#xff1a;[**https://www.oracle.com**](https://www.oracle.com)二、安装 JDK1、鼠标右键安装包&#xff0c;以管理员身份运行(无脑下一步即可)2、细节说明三、配置环境变量1、为啥要配置环境变量呢&#xff1f;2、原因分析3、配置环境变量…...

【Storm】【六】Storm 集成 Redis 详解

Storm 集成 Redis 详解 一、简介二、集成案例三、storm-redis 实现原理四、自定义RedisBolt实现词频统计一、简介 Storm-Redis 提供了 Storm 与 Redis 的集成支持&#xff0c;你只需要引入对应的依赖即可使用&#xff1a; <dependency><groupId>org.apache.storm…...

算法代码题——模板

文章目录1. 双指针: 只有一个输入, 从两端开始遍历2. 双指针: 有两个输入, 两个都需要遍历完3. 滑动窗口4. 构建前缀和5. 高效的字符串构建6. 链表: 快慢指针7. 反转链表8. 找到符合确切条件的子数组数9. 单调递增栈10. 二叉树: DFS (递归)]11. 二叉树: DFS (迭代)12. 二叉树: …...

CentOS 7.9汇编语言版Hello World

先下载、编译nasm汇编器。NASM汇编器官网如下图所示&#xff1a; 可以点图中的List进入历史版本下载网址&#xff1a; 我这里下载的是nasm-2.15.05.tar.bz2 在CentOS 7中&#xff0c;使用 wget http://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2下载…...

CoreData数据库探索

CoreData是什么 Core Data 是苹果公司提供的一个对象-关系映射框架&#xff08;Object-Relational Mapping&#xff0c;ORM&#xff09;&#xff0c;用于管理应用程序的数据模型。Core Data 提供了一个抽象层&#xff0c;使开发人员能够使用面向对象的方式访问和操作数据&…...

FreeRTOS入门

目录 一、简介 二、堆的概念 三、栈的概念 四、从官方源码中精简出第一个FreeRTOS程序 五、修改官方源码增加串口打印 一、简介 FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统&#xff0c;功能包括&#xff1a;任务管理、时间管理、信号量、消息队列、…...