看新闻很累?看技术新闻更累?试试下载 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 项目做出贡献。
评论