BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Dylan Schiemann 关注 8 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2018年5月23日. 估计阅读时间: 4 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

看新闻很累?看技术新闻更累?试试下载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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT