在今年的 Strange Loop 大会上, Pam Selle 介绍了JavaScript中的流(stream)的概念,她认为这就是“我们需要的数据结构”。
Selle认为流与典型的序列数据操作不同,它可以“让我们在没有列表结构的时候就可以进行列表操作,无需为其耗费太多精力以致恼怒不休。”
有些人可能对Node中流得概念很熟悉,Selle带领人们回忆了UNIX命令行管道,又为大家讲解了ES6生成器为JavaScript增添的艺术色彩,后者是ES6标准的一部分,最重要的是,生成器是用 function*
声明的“可重用且可暂停的函数”,每当遇到 yield
语句便继续执行。这里有一个简单的示例:
function* sayHello() { yield "hello"; }
Selle强调说她在项目中最喜欢用的三个库是: BaconJS 、 HighlandJS 和 RxJS 。Angular JS是当前流行的JavaScript框架,在它的推动下,RxJS很可能在2016年突然火爆。在Angular 2中,observable是一等实体,新的Http模块使用的正是RxJS的observable。在最近 有关Angular 2的调查 中显示,38.7%的被调查者表示他们计划使用RxJS,只有6.6%的人选择了BaconJS。另外,ES7引入了一个有关 observable类型 的提案,此类型正是基于RxJS风格的observable加以改进实现的。
最让Selle激动的是,人们会为流这一特性构想出无数的使用方式:
我的梦想是你们在未来能够做一些类似大数据可视化这样的事情,在我的想象范围内,这是可以用流特性做的最酷的事情,然而这仅仅只是一个开端。
使用 gulp 构建系统的前端开发者已经对流很熟悉了,在gulp中,命令是与使用pipe()函数执行构建步骤结合在一起的。
Selle的演讲视频可以在 Youtube 上观看,她的幻灯片可以点击 http://pselle.github.io/omgstreams/ 查看,明年的Strange Loop大会将于2016年9月15-17号在圣路易斯召开。
查看英文原文 : JavaScript Streams Introduced at Strange Loop