写点什么

RxJS 6 发布,改进了性能和模块化

  • 2018-05-22
  • 本文字数:1027 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

RxJS 团队宣布RxJS 6.0 发布。6.0 改进了模块化方法和平滑迁移性能、为简化升级而添加了反向兼容软件包,并为TypeScript 用户提供了代码迁移。

rxjs-compat 软件包提供了一个版本间的兼容层,用于实现从 RxJS 5 到 6 的平滑迁移,

用户可以使用 npm 安装 RxJS 6 和兼容层,命令如下:

复制代码
npm install rxjs@6 rxjs-compat@6 --save

兼容层使代码无需更改即可升级到 6。但如果开发人员想在部署到生产环境前降低 RxJS 源包的大小,还应于此后升级自身的源代码。

Angular 6 用户也可受益于 RxJS 的 Schematics。他们可以利用 Angular 6 提供的ng update机制在应用中自动安装 rxjs-compat。

RxJS 6 将模块导入路径重新组织为如下几类:

  • rxjs: 创建方法、类型、调度器和工具。
  • rxjs/ajax: RxJS HTTP 请求实现。
  • rxjs/operators: 可链式调用(Pipeable)的 RxJS 操作符。
  • rxjs/testing: RxJS 测试工具。
  • rxjs/webSocket: RxJS WebSocket 实现。

推荐 RxJS 的 TypeScript 用户使用rxjs-tslint,它有助于将版本 5 的导入路径重构为版本 6。

RxJS 6 的另一个显著改进,是将操作符转变为使用链式调用 API。RxJS 的前期版本中以对操作法原型打补丁的方式提供了链式调用,但这样的全局实现引入了一些挑战,包括对 WebPack 的摇树(tree-shaking)优化功能,以及对代码检查(linting)工具。

例如,下面给出的例子代码使用了 RxJS 5:

复制代码
source
.map(x => x + x)
.mergeMap(n => of(n + 1, n + 2)
.filter(x => x % 1 == 0)
.scan((acc, x) => acc + x, 0)
)
.catch(err => of('error found'))
.subscribe(printResult);

如果使用 RxJS 6,那么代码变为:

复制代码
source.pipe(
map(x => x + x),
mergeMap(n => of(n + 1, n + 2).pipe(
filter(x => x % 1 == 0),
scan((acc, x) => acc + x, 0),
)),
catchError(err => of('error found')),
).subscribe(printResult);

近期,RxJS 项目牵头人 Ben Lesh 也谈及了 RxJS 6 ,并介绍了支持项目改进的动机所在。

RxJS 是一种用于响应式编程的软件库,它使用 Observable 构建异步代码或基于回调的代码。RxJS 中 Observable 部分的标准化工作已经启动,并有望作为未来 JavaScript 版本的组成部分。但是推进 Observable 建议仍未受其牵引。

RxJS 使用 Apache 2 许可发布。更多信息,请访问 RxJS 网站。欢迎开发人员通过 RxJS GitHub 项目做出贡献。

查看英文原文: RxJS 6 Release Improves Performance and Modularity

2018-05-22 19:002247
用户头像

发布了 391 篇内容, 共 138.3 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

中国云计算的云栖“坐标”

脑极体

随想之乐观估计

云杉

理财专题一

TCA

基于 Flink 的典型 ETL 场景实现方案

Apache Flink

flink

欧洲央行近期将决定是否建立官方数字货币

CECBC

数字货币 欧央行

架构师课程大作业 知识图谱

杉松壁

甲方日常 14

句子

Java 工作 随笔杂谈 日常

RabbitMQ 重要概念介绍

hepingfly

Java RabbitMQ 消息队列 JMS

你还在手撕微服务?快试试 go-zero 的微服务自动生成

万俊峰Kevin

微服务 microservice go-zero Go 语言

SwiftGG 文档翻译笔记1-基础部分函数闭包

组合模式

纯纯

C/C++基础之sizeof使用

C语言与CPP编程

c c++ 编程 编程语言

Flink SQL CDC 上线!我们总结了 13 条生产实践经验

Apache Flink

flink

2020英特尔大师挑战赛携手华硕ROG激战成都

E科讯

Http请求中如何保持状态?

架构师修行之路

大作业

Geek_2e7dd7

Spring 5 中文解析测试篇-WebTestClient

青年IT男

单元测试 Spring5

区块链永续合约交易所搭建,永续合约系统开发

测试

云龙

解决分布式session问题

架构师修行之路

分布式 架构设计 session

SpringBoot RabbitMQ消息队列的重试、超时、延时、死信队列

Barry的异想世界

RabbitMQ springboot 消息队列 死信队列 延时队列

STL总结与常见面试题

C语言与CPP编程

c c++ 编程 编程语言 stl

Spring事务是如何应用到你的业务场景中的?

AI乔治

Java spring 架构 微服务 springboot

高并发系列——CAS操作及CPU底层操作解析

诸葛小猿

CAS AtomicInteger compareAndSwap cmpxchg lock

直播风口,是什么在支撑教育、电商、泛娱乐等场景?

腾讯云音视频

腾讯云 音视频 云直播 点播

前端必会的七种排序算法

执鸢者

算法 大前端

为什么区块链能成为全球贸易的助推器

CECBC

区块链 金融 国际贸易

LeetCode题解:1. 两数之和,Map+队列+双指针,JavaScript,详细注释

Lee Chen

大前端 LeetCode

你需要开始做点什么,否则你会一直忙一直忙

老胡爱分享

学习 思维方式 行动派 随笔杂谈 拖延症

测试

非科班进大厂必备算法

我是程序员小贱

面试 算法

RxJS 6发布,改进了性能和模块化_JavaScript_Dylan Schiemann_InfoQ精选文章