2012-08-08 83 views
3

我是Node新手,來自C#背景,我期望通過Node來了解依賴注入的主要內容之一。我知道wire.js具有這種功能,並且我已經閱讀了所有可以找到的內容,甚至還下載了Html「Hello World」示例。但是,我仍然無法使其正常工作。node.js中wire.js的示例

這裏就是我所做的,以嘗試來得到它的工作:

  1. 我把HELLO-wired.js和HELLO-有線spec.js文件到我的節點項目。
  2. 我從示例應用程序中的/ js/wire的wire文件夾中拉入Node應用程序中的/ node-modules/wire。
  3. 我在構造函數中刪除了hello-world.js中的代碼行,因爲我沒有Html節點,並且我構造了無參數的構造函數。然後,我將sayHello中的行替換爲使用console.log(),因爲我不會有InnerHtml。
  4. 我創建了一個測試行動


app.get('/testwired', function (req, res) { 
    require('wire!hello-wired-spec', function (spec) { 
     console.log(spec); 
     res.send(spec.sayHello("this is a test")); 
    }); 
}); 


是我得到的錯誤是,它無法找到該模塊線!你好連線規格。我認爲這意味着我沒有配置wire.js來知道在哪裏得到我的規範,但我不知道如何。我也不知道我是否應該使用回調。

任何幫助是極大的讚賞。

回答

8

語法「wire!hello-wired-spec」特定於AMD加載器(它使用Wire作爲AMD插件),並且AMD並不瞭解Node的要求。因此,在節點中,您將以編程方式使用Wire,並像其他任何lib一樣使用它。除此之外,它將以基本相同的方式工作:您將爲它提供一個wire spec模塊,並且它將返回一個承諾,一旦它現在連線,它就會解決。

這是一個爲節點編寫的simplest-possible "hello wire"。 main.js需要()s電線,然後將配線規格(在spec.js中)提供給它。 wire()返回一個承諾,用完全有線的上下文來解決。目前沒有太多有趣的線規範,但這就是你進來的地方:)

希望,這足以讓你啓動並運行節點中的電線,但隨時可以在cujojs google group後續跟進,如果你還有其他問題!