组合式API有什么好处

什么是组合式API?

组合式 API (Composition API) 是一系列 API (响应式API、生命周期钩子、依赖注入)的集合。它不是函数式编程,组合式 API 是以 Vue 中数据可变的、细粒度的响应性系统为基础的,而函数式编程通常强调数据不可变

为什么要有组合式API?

1、更好的逻辑复用

它使我们能够通过组合函数来实现更加简洁高效的逻辑复用。在选项式 API 中我们主要的逻辑复用机制是 mixins,而组合式 API 解决了 mixins 的所有缺陷

组合式函数:

可以参考我的关于组合式函数理解的博客:什么是组合式函数?-CSDN博客

mixins 的缺陷:

  • 不清晰的数据来源:

当使用了多个 mixin 时,实例上的数据属性来自哪个 mixin 变得不清晰

  • 命名冲突:

多个来自不同作者的 mixin 可能会注册相同的属性名,造成命名冲突

  • 隐式的跨mixin交流:

多个 mixin 需要依赖共享的属性名来进行相互作用,这使得它们隐性地耦合在一起

2、更灵活的代码组织

下面通过各功能代码的分布让大家直观感受到选项式API和组合式API的区别(同一个功能的代码用同一个颜色标注)

总结:选项式 API 在单个组件的逻辑复杂到一定程度时,会面临一些无法忽视的限制;组合式API则相对来说会更加灵活整齐,也使代码易于维护

3、更好的类型推导

  • 选项式API:(不理想)

2013 年被设计出来的,那时并没有把类型推导考虑进去,因此不得不做了一些复杂到夸张的类型体操才实现了对选项式 API 的类型推导。但尽管做了这么多的努力,选项式 API 的类型推导在处理 mixins 和依赖注入类型时依然不甚理想

  • Class API:(没有继续发展)

基于 Class 的 API 非常依赖 ES 装饰器,在 2019 年我们开始开发 Vue 3 时,它仍是一个仅处于 stage 2 的语言功能。认为基于一个不稳定的语言提案去设计框架的核心 API 风险实在太大了,因此没有继续向 Class API 的方向发展

  • 组合式 API :(比较完善)

主要利用基本的变量和函数,它们本身就是类型友好的。用组合式 API 重写的代码可以享受到完整的类型推导,不需要书写太多类型标注

4、更小的生产包体积

<script setup> 形式书写的组件模板被编译为了一个内联函数,和 <script setup> 中的代码位于同一作用域。不像选项式 API 需要依赖 this 上下文对象访问属性,被编译的模板可以直接访问 <script setup> 中定义的变量,无需从实例中代理,这对代码压缩更友好,因为本地变量的名字可以被压缩,但对象的属性名则不能。

5、和 React Hooks 的对比

Hooks:

  • Hooks 有严格的调用顺序,并不可以写在条件分支中
  • React 组件中定义的变量会被一个钩子函数闭包捕获,若开发者传递了错误的依赖数组,它会变得“过期”,导致非常依赖ESLint 规则以确保传递了正确的依赖,但在一些边缘情况时仍会遇到令人头疼的、不必要的报错信息。
  • 昂贵的计算需要使用 useMemo,这也需要传入正确的依赖数组
  • 在默认情况下,传递给子组件的事件处理函数会导致子组件进行不必要的更新
  • 要解决变量闭包导致的问题,再结合并发功能,使得很难推理出一段钩子代码是什么时候运行的,并且很不好处理需要在多次渲染间保持引用 (通过 useRef) 的可变状态

组合式API:

  • 仅调用 setup() 或<script setup> 的代码一次,不需要担心闭包变量的问题。组合式 API 也并不限制调用顺序,还可以有条件地进行调用。
  • Vue 的响应性系统运行时会自动收集计算属性和侦听器的依赖,因此无需手动声明依赖。
  • 无需手动缓存回调函数来避免不必要的组件更新。

总结:React Hooks 的创造性,它是组合式 API 的一个主要灵感来源。然而,它的设计也确实存在上面提到的问题,而 Vue 的响应性模型恰好提供了一种解决这些问题的方法

总结

组合式 API 提供更高的逻辑复用性和灵活性,使得代码更清晰、更易维护,同时优化了性能和包体积。

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

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

相关文章

论文笔记:Prototypical Verbalizer for Prompt-based Few-shot Tuning

论文来源&#xff1a;ACL 2022 论文地址&#xff1a;https://arxiv.org/pdf/2203.09770.pdfhttps://arxiv.org/pdf/2203.09770.pdf 论文代码&#xff1a;https://github.com/thunlp/OpenPrompthttps://github.com/thunlp/OpenPrompt Abstract 基于提示的预训练语言模型&#…

数据结构——遍历二叉树

目录 什么是遍历二叉树 根据遍历序列确定二叉树 例题&#xff08;根据先序中序以及后序中序求二叉树&#xff09; 遍历的算法实现 先序遍历 中序遍历 后序遍历 遍历算法的分析 二叉树的层次遍历 二叉树遍历算法的应用 二叉树的建立 复制二叉树 计算二叉树深度 计算二…

VR全景摄影的拍摄和编辑软件推荐

随着虚拟现实技术的不断进步&#xff0c;VR全景摄影逐渐成为商业、娱乐和教育等多个领域中的重要工具。通过专业的设备与软件&#xff0c;摄影师能够创作出沉浸式的360度全景作品&#xff0c;为观众提供身临其境的视觉体验。在这篇文章中&#xff0c;我们将介绍VR全景摄影的相关…

(接口测试)day01接口测试理论 http理论 接口测试流程 接口文档解析

一.接口测试理论 1.接口和接口测试 服务器为客户端开了一个验证接口&#xff08;接口本质&#xff1a;函数方法&#xff09;客户端向服务器传送的消息可以相当于函数的参数&#xff0c;接口是用来让客户端传递数据的 接口&#xff1a;相当于开了一个通道 当服务器要给客户端响…

yjs机器学习常见算法01——KNN(K—近邻算法)

1.K—近邻算法 的含义&#xff1a; 简单来说就是通过你的邻居的“类别”&#xff0c;来推测你的“类别” 定义&#xff1a;如果一个样本在特征空间中的k个最相似&#xff08;即特征空间中最临近&#xff09;的样本中大多数属于某一类别&#xff0c;则该样本也属于这个类别。 2.…

猫头虎分享:什么是 ChatGPT 4o Canvas?

猫头虎是谁&#xff1f; 大家好&#xff0c;我是 猫头虎&#xff0c;猫头虎技术团队创始人&#xff0c;也被大家称为猫哥。我目前是COC北京城市开发者社区主理人、COC西安城市开发者社区主理人&#xff0c;以及云原生开发者社区主理人&#xff0c;在多个技术领域如云原生、前端…

独家创作YOLOv8韭菜检测系统(可以重新训练,yolov8模型,从图像、视频和摄像头三种路径识别检测)

1.简介&#xff1a;资源包含可视化的韭菜检测系统&#xff0c;可检测图片和视频当中出现的韭菜&#xff0c;以及自动开启摄像头&#xff0c;进行韭菜检测。基于最新的YOLO-v8训练的韭菜检测模型和完整的python代码以及韭菜的训练数据&#xff0c;下载后即可运行。 2.文件夹介绍…

怎么找矩阵系统,怎么源码搭建,源头技术开发需要哪些支持

一、引言 在进行矩阵系统源码搭建时&#xff0c;选择合适的工具至关重要。正确的工具选择不仅可以提高开发效率&#xff0c;还能确保系统的稳定性、可扩展性和性能。本文将探讨在矩阵系统源码搭建过程中如何选择合适的工具。 二、前端开发工具选择 前端框架 React&#xff1a;由…

【智能大数据分析 | 实验三】Storm实验:实时WordCountTopology

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

手机、固话号码想要认证,需要显示企业名称该怎么设置?

在现如今激烈竞争的商业环境中&#xff0c;依然有越来越多的企业意识到品牌的力量与价值&#xff0c;作为吸引客户关注、打造客户第一印象的关键环节。如何让企业外呼号码展示品牌与企业名称就变得格外关键。 那么手机、固话号码申请号码品牌认证究竟是什么&#xff1f;申请的…

使用CSS Flexbox创建简洁时间轴

使用CSS Flexbox创建简洁时间轴 在网页设计中,时间轴是一种常见且有效的方式来展示事件的顺序和进程。本文将介绍如何使用CSS Flexbox创建一个简洁优雅的时间轴,无需复杂的JavaScript代码。 基本HTML结构 首先,我们需要创建基本的HTML结构: html复制<div class"ti…

IT招聘乱象的全面分析

近年来&#xff0c;IT行业的招聘要求似乎越来越苛刻&#xff0c;甚至有些不切实际。许多企业在招聘时&#xff0c;不仅要求前端工程师具备UI设计能力&#xff0c;还希望后端工程师精通K8S服务器运维&#xff0c;更有甚至希望研发经理掌握所有前后端框架和最新开发技术。这种招聘…

AI大模型是怎么运作的?深入解析

在当今这个日新月异的科技时代&#xff0c;人工智能&#xff08;AI&#xff09;如同一位隐形的助手&#xff0c;悄然渗透进我们生活的方方面面&#xff0c;其影响力日益显著。这位“隐形助手”背后的工作原理究竟是怎样的呢&#xff1f;接下来&#xff0c;本文将从AI的基本原理…

随机多智能体系统中的自然策略能力

本文探讨了在随机多智能体系统中采用自然策略进行PATL及PATL逻辑的模型检验问题。研究发现&#xff0c;当活跃联盟被限于确定性策略时&#xff0c;NatPATL的模型检验问题是NP完全的&#xff1b;在同样的限制条件下&#xff0c;NatPATL的复杂度则为2NEXPTIME。若不限制策略类型&…

2024全面大模型学习指南

前言 随着人工智能技术的迅猛发展&#xff0c;大模型&#xff08;Large Models&#xff09;已成为这一领域的新宠。从GPT系列到BERT&#xff0c;再到各类变体&#xff0c;大模型以其强大的能力吸引了无数开发者和研究者的目光。那么&#xff0c;作为一个零基础的学习者&#x…

2024 年 04 月编程语言排行榜,PHP 排名创新低?

编程语言的流行度总是变化莫测&#xff0c;每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象&#xff1a;PHP的排名再次下滑&#xff0c;创下了历史新低。这种变化对于PHP开发者和整个技术社区来说&#xff0c;意味着什么呢&#xff1f; P…

ChatGPT国内中文版镜像网站整理合集(2024/10/06)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…

LLMs训练避坑帖——如何高效 LLMs pretrain?

LLM训练-pretrain 这篇文章介绍下如何从零到一进行 pretrain 工作。 类似的文章应该有很多&#xff0c;不同的地方可能在于&#xff0c;我并不会去分析 pretrain 阶段的核心技术&#xff0c;而是用比较朴素的语言来描述这个大工程的每一块砖瓦。我的介绍偏方法论一些&#xf…

服务器信息安全可视化:增强风险监测

通过图扑可视化技术&#xff0c;将服务器的安全状态以图形化方式展示&#xff0c;帮助安全团队实时监控潜在威胁&#xff0c;提高快速响应能力&#xff0c;保障数据和系统的安全性与稳定性。

【MATLAB源码-第248期】基于matlab的EMD算法+ICA算法轴承故障分析。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 经验模态分解&#xff08;EMD&#xff09;与轴承故障识别 EMD的基本原理 EMD 是一种自适应的信号分解技术&#xff0c;最初由 Huang 等人在 1998 年提出&#xff0c;旨在分析非线性和非平稳信号。传统的信号处理方法通常假设…