2016-11-28 4 views
1

Я использую Observable класса и имеют следующиеМашинопись импорт различных функций

import { Observable } from 'rxjs/Observable'; 

Теперь я хочу использовать .of функцию Observable, поэтому я должен добавить следующее в мой импорт

import 'rxjs/add/observable/of'; 

Мой вопрос: зачем мне эти функции выполнять отдельно. Разве это не должно быть частью класса Observable? Плюс, когда я перехожу в папку модуля rxjs, я вижу несколько разных файлов, таких как .d.ts, merge.d.ts. Почему это в отдельных файлах, чтобы минимизировать загруженные файлы? Плюс, как я могу загрузить полную библиотеку, если захочу?

ответ

4

Да, это позволит вам как можно меньше оставить площадь вашей библиотеки. Если вы хотите перетащить все, вы можете ссылаться на файл Rx.d.ts. Тем не менее, я обнаружил, что таргетинг только на то, что я использую, экономит мне более 100 тыс. Uglified js только в rxjs, поэтому я создал свой собственный «баррель» для этой задачи. Вот пример:

export { Observable } from 'rxjs/Observable'; 
export { Subscription } from 'rxjs/Subscription'; 
export { Subject } from 'rxjs/Subject'; 
export { BehaviorSubject } from 'rxjs/BehaviorSubject'; 
export { AsyncSubject } from 'rxjs/AsyncSubject'; 

import 'rxjs/add/observable/never'; 
import 'rxjs/add/observable/of'; 
import 'rxjs/add/observable/timer'; 
import 'rxjs/add/observable/using'; 
import 'rxjs/add/observable/fromEvent'; 
import 'rxjs/add/observable/zip'; 

import 'rxjs/add/operator/concat'; 
import 'rxjs/add/operator/pairwise'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/switchMap'; 
import 'rxjs/add/operator/merge'; 
import 'rxjs/add/operator/combineLatest'; 
import 'rxjs/add/operator/filter'; 
import 'rxjs/add/operator/distinctUntilChanged'; 
import 'rxjs/add/operator/do'; 
import 'rxjs/add/operator/first'; 
import 'rxjs/add/operator/delay'; 
import 'rxjs/add/operator/zip'; 

Обратите внимание, что файлы в observable являются статическими методами, которые вы хотите, чтобы иметь возможность вызывать на Observable, а те, в operator являются те, которые доступны на наблюдаемых экземплярах.

+0

Другой довольно распространенный: 'import 'rxjs/add/operator/catch';' –