Node.js反应式编程的优缺点是什么,如何应用
Admin 2022-07-14 群英技术资讯 729 次浏览
今天这篇我们来学习和了解“Node.js反应式编程的优缺点是什么,如何应用”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“Node.js反应式编程的优缺点是什么,如何应用”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!
反应式编程提供了先进的数据流,能够以一种可预测的方式创建和操作事件流。
本文将告诉Node.js开发者如何在Node中应用反应式编程,以及它的好处和利弊。
本文将涉及以下内容。
反应式编程的基本原理
为什么考虑在Node.js中进行反应式编程?
何时使用反应式编程方法
反应式编程的好处
反应式编程的弊端
介绍协调和它的好处/利弊
Node的反应式编程库
简而言之,当输入的变化导致输出的相应变化,而不需要手动更新输出的变化时,就可以说一个程序是反应式的。这使得软件工程师可以绕过手动处理巨大实现的压力。
功能性的反应式编程范式使我们的反应式代码库很容易被阅读和理解,因为它减少了回调地狱,这使得异步的代码块难以阅读。
由于反应式编程与异步操作有很大关系,函数式方法使我们更容易确定异步操作的结果。
操作符是Observables严重依赖的方法。它们有以下使用情况。
可观察操作符包括[filter(...)](https://rxjs.dev/api/operators/filter),[mergeMap(...)](https://rxjs.dev/api/operators/mergeMap),[of](https://rxjs.dev/api/index/function/of),[from](https://rxjs.dev/api/index/function/from),[concat](https://rxjs.dev/api/index/function/concat) 方法,等等。
一个Observable流是一个由多个输入值组成的数组,它随着时间的推移被处理。一个Observable流向它的订阅者发出事件,而订阅者又听从这些事件进行进一步处理。可观察的流可以被组合来创建新的流。数组方法,如map,reduce,filter ,等等,都是用来操作流的。
值可以按以下方式发射给订阅者。
import { of, Observable } from "rxjs";
const emitter : Observable<string> = of("Sam", "Ray", "Thomas");Observable订阅器更像是数组迭代器。它们在产生的Observable流中循环,使之有可能转换或处理每个流。
下面的片段展示了如何订阅一个Observable流。
emitter.subscribe((value: string) => {
console.log(`Name: ${value}`)
})反应式编程有一些内置的订阅方法,如emit 和flatMap map方法,这些方法允许我们监听Observable流的每个值,并根据我们的需要对它们进行处理。
一个完全反应式的Node.js系统应该满足以下标准。
一个反应式系统应该拥有良好的用户体验,对用户的互动提供及时的响应。
弹性架构,如果正确实施,将允许系统响应错误而不破坏整个系统。
这种架构确保每个节点都有一个复制品。如果主节点发生故障,在其他可用的节点上会有某种回退。
系统应该能够处理不同的负载,这与它的能力有关,当基础设施需要很少或没有资源时,它可以缩小规模,而当基础设施需要更多资源时,它可以扩大规模,以便提供一个有效的成本管理策略。
此外,该系统也应该能够处理时间点的负载。
现在我们已经简要地讨论了反应式编程的基本原理,了解考虑用Node.js进行编程的反应式方法的原因也很重要。
编写功能性的反应式代码可以更容易地管理代码库,提高项目的可扩展性。
对于需要定期修改功能或增加新功能的项目来说,编写功能性反应式代码使得新功能更容易被添加到现有项目中。
在对外部API进行异步请求时,我们确实会遇到一些时间限制的约束。这些限制可以用反应式编程方法有效地处理。
实施反应式编程范式将极大地减少实现特定功能所需的代码量。
在反应式编程诞生之前,用Node.js构建微服务需要协调所有服务互动的协调器模式。
协调器模式的一个典型用例是在电子商务应用中拥有微服务,这些微服务按顺序处理以下任务:从购物车中获取客户订单,计算总金额,生成账单,在成功付款后,更新产品库存并创建一个订单ID,并向卖家提供Pending 。
虽然这提供了一个系统的方法来处理应用程序的逻辑流程,但依赖关系紧密耦合的一个主要缺点会破坏整个系统。例如,如果前面的服务出现故障,那么所有的依赖服务都不会被执行。
反应式编程不是一个万能的方法,但它在一些特定的情况下是非常合适的。
虽然功能化的反应式编程方法减少了协调器模式遇到的缺点,但它不能取代协调器模式,因为它有自己的缺点。
这是JavaScript中最流行的反应式编程库之一,被积极维护。
在写这篇文章的时候,RxJS正在从v7过渡到v8,它在上周有超过2700万次的下载。这次过渡的特点是重写了库的性能,更好的模块化,更好的可调试的调用堆栈,以及向后的兼容性。
下面是一个快速的RxJS使用例子。
import { range } from "rxjs";
import { map, filter } from "rxjs/operators";
range(1, 200)
.pipe(
filter(result => result % 2 === 1),
map(result => result * 2 )
)
.subscribe(result => console.log(result));Reactor.js是另一个用于反应式编程的JavaScript库。虽然与Bacon.js和Rxjs相比,它还不是很流行,但它以轻量而闻名。使用Reactor.js在复杂的数据模型中保持一致性要容易得多,因为它能自动跟踪反应式变量,并在任何反应式变量的值发生变化时重新触发观察者。
使用Reactor.js,不需要手动设置订阅/监听器,因为依赖关系会自动为你设置。
下面是一个Reactor.js使用的快速例子。
const reactor = new Reactor({ name: "Doe" });
observe(() => {
console.log("My name is ", reactor.name);
}); // prints "My name is Doe"
reactor.name = "John "; // prints "My name is John"Reactor是基于与Bacon.js和Knockout.js相同的反应式原理。
其他用于反应式编程的JavaScript库包括。
在这篇文章中,我们探讨了反应式编程,它的好处,以及何时最适合我们的Node.js项目。此外,我们还讨论了协调、其好处/利弊以及用于Node.js中反应式编程的JavaScript库。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在之前的文章《JS循环学习:while循环语句的使用(示例详解)》中,我们简单了解了 while 循环和 do while 循环,而今天再来介绍一种循环——for 循环语句,希望对大家有所帮助!
javascript语句必须嵌套在“script”标签中,script标签用于定义客户端脚本,该标签既可包含脚本语句,也可以通过“src”属性指向外部脚本文件,语法为“<script>javascript语句代码</script> ”。
vue项目或网页上实现文字转换成语音播放功能,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
接金币游戏的游戏,相信不少朋友都有玩过,或者玩过类似的,也就是屏幕上方掉落进步,移动下方接金币区域来接住金币。那么如果我们用JavaScript如何实现呢?下面就给大家分享如何用JS做一个接金币游戏。
这篇文章主要给大家介绍了关于ES6中Set与WeakSet集合的相关资料,Set是ES6给开发者带来的一种新的数据结构,你可以理解为值的集合,WeakSet结构同样不会存储重复的值,但它的成员必须是对象类型的值,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008