原文出處:http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html

 

這篇文章主要是要探討 AngularJS 的 DI 機制,但我覺得還有令一個重點是再留言的部份,就是提到了 Require 和 DI 的差別,AngularJS 的作者 misko 的敘述如下:

 

Require and DI are similar concepts. Because they are similar developers often get confused and they think they can substituted one for the other, but in reality they are complementary.

require.js is concerned with loading the right code into the VM in the right order once before the application can run.
DI is concerned by instantiating the right classes in the right order many times during the application runtime.

The key differences are loading vs instantiating, classes vs instances, as well as once before application start vs many times during application runtime.

One needs to load the code before the code can be instantiated, hence the complementary nature of the two.

There is also a difference of scope and granularity. Require.js works on file level, and while you can essentially link different files at lead-time, once the files are linked, the relationships are fixed.

DI works on class level. It answers a question such as Class A needs Interface B, where do I get B from. While require.js can substituted different B code at load time, DI can chose among different instance of same B class or different subclass based of the context of where A is instantiated.

 

以上很清楚的說明,RequireJS 和 DI,兩者其實是可以同時存在,因為是互補的關係,不過我通常是兩者選其一,除非我今天寫的案子大到像是 Gmail 一樣,我才可能會考慮用 RequireJS,不然其實 DI 很夠用了。

arrow
arrow

    zack9433 發表在 痞客邦 留言(0) 人氣()