在今年的 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 号在圣路易斯召开。
评论