【问题标题】:Basic questions about Rxjs关于 Rxjs 的基本问题
【发布时间】:2016-07-15 02:07:15
【问题描述】:

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

  1. 我需要做些什么来解决这个问题?
  2. 如果我从 Rxjs 导入所有内容,网站的加载是否会变慢? (我不会超过 2 节课)
  3. (Webstorm 问题)如何让 webstorm 在不按 alt+space 的情况下自动完成函数名称

【问题讨论】:

  • 尝试使用angular-cli 构建您的应用程序,这将使rxjs 默认可用。你只需要将它导入到你的组件中。
  • 我在使用 angular-cli 时遇到了太多错误。所以我搬到了 Angular 团队发布的基本种子项目。 angular cli 是如何导入的?

标签: javascript angular npm rxjs rxjs5


【解决方案1】:

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

改为单独导入方法和运算符:

  • 对于核心类,从其作用域模块导入该类:import { Observable } from 'rxjs/Observable'
  • 对于实例方法,使用“添加”范围内的实例范围: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 };

【讨论】:

    【解决方案2】:
    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 值(设置、编辑器、代码完成)设置为非常低的延迟。

    【讨论】:

    • 感谢您的回复。如何以及在何处添加 Rx.umd.min.js?我有 Webstrom 2016.2,如何更改代码完成的延迟?速度很慢。
    • 注意从 rxjs/Rx 导入,因为它会导入所有的 observable 类型和它的操作符,它们会在编译后的应用空间中汇总。 observable 和 subject 类型的导入语句是 rxjs/[type] 运算符导入语句基于静态和实例导入
    猜你喜欢
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多