gpt4 book ai didi

javascript - 使用 Angular 和 rxjs 导入 ES6 模块

转载 作者:行者123 更新时间:2023-12-03 01:45:14 25 4
gpt4 key购买 nike

有些事情我不确定 ES6 模块的理解,尤其是在导入时有副作用。

例如,在 Angular 项目中,我使用 Rxjs 库来使用 observables。我需要使用 ES6 import 从这个库中导入函数和对象。

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(....);

我的问题是导入:从 'rxjs/Observable' 导入 { Observable } ;似乎可以理解:我正在从位于 node_modules 中的“rxjs/Obserable”导入 Observable 对象。

我的问题是 import 'rxjs/add/observable/of';为什么不类似 import { of } from 'rxjs/....';

我读过 import '...' 不导出任何对象或函数。它到底有什么作用?如果您不导出“of”运算符,如何使用它?何时使用 import */import {} from 或直接 import '...';

谢谢

最佳答案

这实际上是导入运算符的旧方法。

import 'rxjs/add/observable/of'; 实际上是将 of 方法原型(prototype)化为 Observable。当你导入它时,每个 Observable 对象都有可用的 of 方法。这就是为什么您应该将这些导入行放在像 app.module 这样的根文件中。然而,正如我一开始就告诉你的,这是老方法。

在 RxJs 5.5 中,可管道操作符开始发挥作用。您可以并且应该按如下方式导入运算符/可观察量

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

const myObs = of('some value');

通过这种方式,运算符和可观察量变得可以进行树摇动。 Webpack 不会将未使用的运算符放入输出包中。

更新

假设您正在使用一堆运算符,并且在全局文件中添加了静态导入。一段时间后,您重构了代码,并且不再使用 Observable.of。但假设您忘记了已将其导入到全局文件中。即使您不再使用 of,您仍然会在输出包中获得可观察的 of 代码。原型(prototype)设计使得您的代码无法进行树形抖动。建议你看this 。 Ben Lesh 解释了可管道运算符和 RxJs6。

关于javascript - 使用 Angular 和 rxjs 导入 ES6 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50668151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com