2015-06-25 43 views
1

我目前正在處理服務器端節點項目。雖然節點有使用CommonJS的模塊加載器,但我正在評估是否使用RequireJS。雖然使用RequireJS和Node有一些優點,但如果應用程序具有一些客戶端方面的功能,對於完全服務器端的項目我找不到任何好處。使用requirejs與節點

人們普遍認爲,對於100%服務器端的Node項目,併入RequireJS沒有真正的優勢嗎?

+0

什麼問題,我同意使用requirejs對nodejs沒有任何好處。因爲它已經有非常好的java加載能力,'require('./ file')'等等。 –

回答

0

有使用RequireJS服務器端的原因,但它們很少。除非你能說出的理由,如:

必須使用RequireJS因爲X

其中「X」是指證明使用RequireJS的原因,那麼你不應該這樣做。

請注意,僅僅想要以AMD格式編寫模塊並不足夠,因爲存在允許在Node中加載AMD模塊的加載器(如node-amdl-loader)。當我想測試不依賴於瀏覽器的代碼時,我實際上使用了它。我以AMD格式編寫模塊,並指定如果在Node中使用,則應使用像node-amd-loader這樣的AMD加載器。這種方式庫在Node和瀏覽器中都可以工作,但是我在Node中測試它。例如,如果您需要運行需要DOM實現的代碼,則使用RequireJS服務器端的一個原因是例如。如果您使用像jsdom這樣的東西來提供DOM,並且您要加載的代碼是一系列AMD模塊,那麼使用RequireJS將代碼加載到由jsdom創建的DOM環境中很有意義。

+0

謝謝你。我想主要原因是讓我在我的開發堆棧中保持一致。通常我的工作不僅僅是服務器端。 如果在性能方面沒有缺陷,或者過度複雜並可能導致軟件包兼容性問題的可能性,我仍然會使用它。 您是否會說使用requirejs會在加載/處理時間方面增加很多開銷,因爲它正在與現有模塊加載器一起加載。還是它比CommonJS更快? – Michael

+0

在許多情況下,可以通過使用諸如node-amd-loader之類的AMD加載器並完全跳過RequireJS來實現一致性的理想目標。RequireJS無論如何都不錯,但它試圖解決瀏覽器環境特有的問題。在Node中運行它時,沒有必要*的實質性理由,意味着要處理RequireJS的其他特性。例如,在[你的問題]中(http://stackoverflow.com/q/31039014/1906307),你的代碼和CommonJS一樣好,不會引起神祕的雙重加載問題。 – Louis

0

我從來沒有找到一個很好的理由在節點中使用RequireJS。然而,RequireJS can be run on node,和文檔具有的,爲什麼你可能要一個節點服務器上運行RequireJS簡要說明:

通過使用服務器上RequireJS,您可以使用一個格式爲所有 模塊,它們是否正在運行服務器端或瀏覽器中。那 方式你可以保留速度的好處和容易的調試,你得到 與RequireJS在瀏覽器中,而不必擔心額外的 轉換成本之間移動兩種格式。

大多數情況下,這隻適用於也有客戶端元素的項目。如果是我,我會堅持Node's internal module loader