关于 Rxjs 的基本问题

Basic questions about Rxjs

我正在用 angular2 开发一个小应用程序,我安装了 Rxjs 5。 在每个教程中,都有不同的方法来导入 Rxjs 库。 angular2 web 中导入的代码无效;我的意思是 Websotrm 无法识别 Observable 或其任何功能(来自、订阅、...)。

  1. 我需要做什么来解决这个问题?
  2. 如果我全部从Rxjs导入,网站的加载速度会不会变慢? (我不会有超过 2-类)
  3. (Webstorm 问题)如何使 webstorm 无需按 alt+space
  4. 即可自动完成函数名称
  1. 这适用于我的项目:import {Observable, Subject} from "rxjs/Rx";

  2. 您只需要从 rxjs/bundles 添加 Rx.umd.min.js。大约170KB。

  3. 尝试升级到 WebStorm 2016.2。我正在使用那个版本并且它工作正常(前提是你有正确的导入)一般来说对 Angular 2 有更好的支持。请参阅更改说明。 我几乎从不使用 Ctrl+Space。提示:将 Autopopup code completion 值(设置、编辑器、代码完成)设置为非常低的延迟。

最新的 RXJS 发行版提供分解模块以减轻巨大的文件大小,就像 Lodash。导入 rxjs/Rx(如另一个答案所建议的那样)将为您提供整个库,但不建议这样做。

而是单独导入方法和运算符:

  • 对于核心 classes,从其作用域模块中导入 class:import { Observable } from 'rxjs/Observable'
  • 对于实例方法,使用 "add" 作用域中的实例作用域:import 'rxjs/add/observable/fromEvent'(注意没有要导入的解构对象——该方法由导入自动添加)
  • 对于运算符,从 add/operator 范围导入:import 'rxjs/add/operator/switchMap'

一次导入运算符使其对所有实例可用,因此建议将您使用的所有部分收集在一个文件中,并在需要的地方导入该文件,即通过重新导出您使用的实例。

import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import 'rxjs/add/observable/fromEvent';
import 'rxjs/add/operator/flatMap';
import 'rxjs/add/operator/switchMap';

export { Observable, BehaviorSubject };