Reactive Extensions for JavaScript瘦身不再支持旧浏览器

RxJS 2.2进行了瘦身,在默认构建中只支持ECMA Script 5浏览器。这意味着使用Reactive Extensions for JavaScript需要IE 9、Firefox 4、Safari 6、Chrome 19或更新的版本。要想支持旧版本需要使用rx.compact.js来提供缺失的Polyfills。

要进一步瘦身,开发者可以使用Rx-Lite(也叫rx.lite.js)。该库只包含最常用的特性。Rx团队的博客中这样说道,

为了避免RxJS中点菜式的传统,仅使用需要的部分,该版本只包含最常用的工厂方法中的操作符、标准查询操作符、基于时间的操作符、绑定操作符(如广播)和异步操作符(如Rx.Observable.fromEvent、Rx.Observeable.fromPromise等)。还有一个兼容版本rx.lite.compat.js,支持老一些的浏览器。整个库压缩后只有7kb大小,这在没有多少成本的情况下提供了很多可能性。

和完整版一样,Rx-Lite也是为ECMAScript 5而设计,并为老浏览器提供了可选的兼容库。

RxJS 2.2中还有一些其他方面的重大改变。首先是Rx.Observable.prototype.scan的行为,“因其属于Reactive Extensions for .NET,所以也发生了改变”。声明中还说道,

这是为了反映其他语言中的行为,如F#、Haskell等。基本规则是,如果有一个空的且有种子的可观察序列,那么应该产生(yield)这个种子。或者如果序列为空且没有种子,那么它就应该是一个空序列。这与旧版本不同,在旧版本中,即使空序列有种子,也不会产生任何东西。

其他方便的变动是将四个函数移动到新的库中:

  • Rx.Observable.toAsync移动到rx.async.js
  • Rx.Observable.start移动到rx.async.js
  • Rx.HistoricalScheduler移动到rx.virtualtime.js
  • Rx.VirtualTimeScheduler移动到rx.virtualtime.js

同样,这也是为了降低核心文件的大小。我们将在关于RxJS未来的报道中深入介绍rx.async.js。

原文链接:Reactive Extensions for JavaScript Loses Weight and Older Browsers

你可能感兴趣的:(Reactive Extensions for JavaScript瘦身不再支持旧浏览器)