在rxjs 5中添加的文件夹是什么?

时间:2017-04-01 14:52:22

标签: rxjs rxjs5

查看rxjs目录结构时,似乎有两个 observable 运算符 的副本文件夹 - 一个位于add文件夹内,另一个位于add外。

有人可以解释为什么存在这两个副本吗?

1 个答案:

答案 0 :(得分:2)

两组目录的用途略有不同。实例和类运算符的实际源存储在operator文件夹之外的observableadd文件夹中。因此,例如,当您使用流$ .map时,该map运算符的javascript代码将存在于非添加运算符文件夹中。

默认情况下,RxJS附带了大量的实例和类操作符来执行大量操作。但是,该库的大多数用户只会使用这些运算符的一小部分。因此,通过使用正确的导入,RxJS允许您在没有任何运算符的情况下创建Observable类,然后仅将您要使用的运算符添加到Observable类型。

第二个用例是add文件夹的原因。

所以,例如,你可以:

// get the basic Observable type with no operators added at all
import {Observable} from 'rxjs/Observable'; 

// add the map instance operator so you can do observableInstance.map
import 'rxjs/add/operator/map';  

// add the Observable.of class operator so you can do Observable.of
import 'rxjs/add/observable/of';

如果查看该add文件夹中任何内容的源代码,您会看到它将大部分工作委托给non-add版本 - 它只是修补了基本的Observable类型以添加​​运算符问题

@Eye的所有功劳:

为什么我们懒得以这种方式拆分代码?它主要完成了客户端代码的效率,特别是减少了必须从服务器发送到浏览器的代码的大小。因此,您只需导入代码observables / observers以及您需要的运算符,而不是使用大量代码导入整个库。这样做时,客户端捆绑包的大小将大幅减少。