импортировать модули ES6 с Angular и rxjs - PullRequest
0 голосов
/ 03 июня 2018

Есть кое-что, что я не совсем понимаю с модулями ES6, особенно когда речь идет об импорте с побочными эффектами.

Например, в проекте Angular я использую библиотеку Rxjs для использования наблюдаемых.Мне нужно импортировать функции и объекты из этой библиотеки с помощью импорта ES6.

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';

//later in the code I'm using these imports like this in a method
return Obserable.of(....);

Моя проблема связана с импортом: import {Observable} из 'rxjs / Observable';кажется понятным: я импортирую объект Observable из 'rxjs / Obserable', расположенного в node_modules.

Моя проблема связана с импортом 'rxjs / add / observable / of';Почему бы что-то вроде import {of} из 'rxjs /....';

Я прочитал import' ... 'не экспортирует ни один объект или функцию.Что именно это делает?Если вы не экспортируете оператор «как», как вы можете его использовать?Когда использовать import * / import {} из или напрямую импортировать '...';

Спасибо

1 Ответ

0 голосов
/ 03 июня 2018

Это на самом деле старый способ импорта операторов.

import 'rxjs/add/observable/of'; на самом деле является методом прототипирования of до Observable.Когда вы импортируете это, каждый объект Observable имеет доступный метод of.Вот почему вы должны поместить эти строки импорта в корневой файл, например app.module.Однако, как я говорил вам в начале, это старый способ.

С RxJs 5.5 в игру вступили работоспособные операторы.Вы можете и должны импортировать операторы / наблюдаемые следующим образом

import { of } from 'rxjs/observable/of';

const myObs = of('some value');

Таким образом, операторы и наблюдаемые становятся древовидными.Webpack не будет помещать неиспользуемые операторы в ваш выходной пакет.

Обновление

Допустим, вы используете несколько операторов и добавили статический импорт в глобальный файл.Через некоторое время вы реорганизовали свой код и больше не используете Observable.of.Но допустим, вы забыли, что уже импортировали это в глобальный файл.Даже если вы больше не используете of, вы все равно получите код of, наблюдаемый в вашем выходном пакете.Прототипирование делает невозможным тряску вашего кода.Я предлагаю вам посмотреть это .Бен Леш объясняет работоспособные операторы и RxJs6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...