的jQuery与角4:InjectionToken VS打字稿进口
问题描述:
提供我已经安装了jQuery的&其类型:的jQuery与角4:InjectionToken VS打字稿进口
npm i jquery
npm i @types/jquery
和能力,导入
import * as $ from 'jquery';
现在我有充分的:
- 打字稿支持
- jQuery是AUT (我使用Angular CLI)
所以我的问题是:为什么我应该打扰使用InjectionToken(以前的OpaqueToken)有围绕jQuery的另一层?我的意思是:什么才是真正的好处?也许我可以嘲笑jQuery的时候进行单元测试,但在角应用我从来没有真正做到了,从来没见过......
答
可测性是DI和最明显的原因的一个好处,为什么它是使用好习惯全局变量和导入的库都是Angular提供者(即使jQuery被导入,它仍然可以是全局变量)。间谍或存根提供者比导入模块更容易。
DI可以更容易地保持同一个应用程序中的几个jQuery的版本,jQuery.noConflict()
。这消除了问题如果第三方模块依赖于某些jQuery版本,并且应用程序单元依赖于另一个。
DI提供了一些自由裁量权的服务器端呈现。尽管它可能在Node.js的使用jQuery,这将需要提供window
实例与DOM实现。使用DI,可以轻松地将应用程序单元中的jQuery替换为像Cheerio这样的节点友好的实现或者不涉及DOM的某个存根。