bea*_*mes 11 rxjs tslint angular-cli
默认情况下,使用angular-cli项目,tslint设置包含了波动的东西.我最近接触过一个新的开发人员,我在Atom中配置了他们的tslint实例.
我被问到以下几行:
import { Observable, BehaviorSubject } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)
TSLinter说rxjs被列入黑名单.我去了tslint.json文件,果然,它被列出了.
什么是黑名单,它是否保护应用程序免受某些侵害?
为什么rxjs默认添加到列表中?
我应该在什么条件下添加其他东西呢?
我想指出我知道如何'解决'这个问题::
import { Observable } from 'rxjs/observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
Run Code Online (Sandbox Code Playgroud)
问题仍然在于TSLint背景下黑名单的含义.
mar*_*tin 17
这是因为你应该(至少在浏览器应用程序中)从不包含,'rxjs'并且总是使用更具体的例子'rxjs/Observable'或'rxjs/BehaviorSubject'.
当你包括'rxjs'你实际上包括这个文件:https://github.com/ReactiveX/rxjs/blob/master/index.js,其中包括整个捆绑的RxJS库(所有运营商,调度程序等).所以你要包括许多你甚至不使用的东西,你的应用程序变得比必要的大(我认为使用webpack2的树状结构没有帮助,一旦包含代码,它将成为最终包的一部分,但我可能错了).
我认为这是确定直接从导入'rxjs'的node应用程序(如后端应用程序)和其中不管那么多了,它也含有编码你不打算使用这种方法就是使用更方便.
这样做的原因是因为tslint.json中的更改,因为他们不希望将rxjs的整个模块都加载到Angular Application上,因为这会增加依赖项加载的负担。而是仅加载应用程序所需的子模块。
为了解决它,改变
import { Observable, BehaviorSubject } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)
至:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3336 次 |
| 最近记录: |