2017-05-25 83 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的某個存根。