簡體   English   中英

如何在node.js中並排使用CommonJS和AMD

[英]How to use CommonJS and AMD side by side in node.js

我已經研究了CommonJs,AMD,模塊加載和相關問題超過一周。 我覺得什么都沒有我需要的東西。 我的基本需求是在前端和后端之間無縫共享代碼。 圍繞此問題存在各種問題,包括客戶端的模塊格式,腳本加載和模塊格式轉換/包裝。 我最近一直在努力的部分是如何在node.js中使用CommonJS和AMD(或類似AMD的東西)。

你無法擺脫node.js中的commonJs,所以我的想法是,如果我想使用AMD,它必須與commonJs一起工作。 我可以使用哪些工具,庫或技術來獲得類似AMD的工作?

例如,我希望能夠編寫這樣的模塊:

var x = require('x')

modules.exports = function(a, callback) {
  if(a) {
     require(['y','z'], function(y,z) {
       callback(x, y.o + z.k)
     }
  } else {
    callback(x, "ok")
  }
}

理想的情況是:

  • node.js和類似amd的模塊都將以node.js方式解釋路徑(除非模塊路徑以“/”,“./”或“../”開頭,否則請注意node_modules)
  • 在構建步驟中不需要服務器端的源轉換(即模塊將在node.js中運行,而不是每個都以編程方式轉換)
  • modulerequire不需要顯式傳遞給類似amd的require函數

uRequire是滿足此要求的完美工具,它與模塊格式之間的互操作性及其不兼容性有關。

本質上,uRequire將模塊從nodejs轉換或轉換為AMD,反之亦然,加上在nodejs和瀏覽器上運行的UMD格式,或者在瀏覽器上不需要AMD加載器的組合。

雖然這需要一個構建步驟,但與產品相比,這是一個小問題。

你可以查看, http://dojotoolkit.org/documentation/tutorials/1.9/node/我只玩了一點,但是我已經嘗試過了。 我得到它與node-orm一起工作,並記住這是一個痛苦的開始,但可能是我在玩它時弄得一團糟。

基本上你最終在服務器上使用AMD,例如:

require(["dojo/node!orm","other/amd/module"], function(orm){
    //use third party commonjs module and your own amd modules here
}

看起來你已經調查過Requirejs建議將commonjs模塊包裝在AMD需求中(在構建過程中最有可能使用r.js)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM