2017-05-25 37 views
0

提供我已经安装了jQuery的&其类型:的jQuery与角4:InjectionToken VS打字稿进口

npm i jquery 
npm i @types/jquery 

和能力,导入

import * as $ from 'jquery'; 

现在我有充分的:

  • 打字稿支持
  • jQuery是AUT (我使用Angular CLI)

所以我的问题是:为什么我应该打扰使用InjectionToken(以前的OpaqueToken)有围绕jQuery的另一层?我的意思是:什么才是真正的好处?也许我可以嘲笑jQuery的时候进行单元测试,但在角应用我从来没有真正做到了,从来没见过......

回答

0

可测性是DI和最明显的原因的一个好处,为什么它是使用好习惯全局变量和导入的库都是Angular提供者(即使jQuery被导入,它仍然可以是全局变量)。间谍或存根提供者比导入模块更容易。

DI可以更容易地保持同一个应用程序中的几个jQuery的版本,jQuery.noConflict()。这消除了问题如果第三方模块依赖于某些jQuery版本,并且应用程序单元依赖于另一个。

DI提供了一些自由裁量权的服务器端呈现。尽管它可能在Node.js的使用jQuery,这将需要提供window实例与DOM实现。使用DI,可以轻松地将应用程序单元中的jQuery替换为像Cheerio这样的节点友好的实现或者不涉及DOM的某个存根。