5

CommonJs、A​​MD、モジュールのロード、および関連する問題を 1 週間以上調査してきました。私が必要とするものは何もないように感じます。私の基本的なニーズは、フロントエンドとバックエンドの間でコードをシームレスに共有することです。これには、クライアント側のモジュール形式、スクリプトの読み込み、モジュール形式の変換/ラッピングなど、さまざまな問題があります。私が最近苦労しているのは、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 で実行されます)
  • moduleまたはrequire、amd のような require 関数に明示的に渡す必要はありません
4

2 に答える 2

2

uRequireは、この要件に最適なツールです。モジュール形式間の相互運用性と非互換性がすべてです。

基本的に、uRequire はモジュールを nodejs から AMD に、またはその逆に変換または変換します。加えて、nodejs とブラウザーの両方で実行される UMD 形式、またはブラウザーで AMD ローダーを必要としない結合された .is です。

ただし、ビルド手順が必要になりますが、それはオファリングとは対照的に小さな問題です.

于 2013-10-15T00:31:57.173 に答える
1

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
}

CommonjsモジュールをAMDのrequireにラップするというRequirejsの提案をすでに調査しているようです(ビルド中に自動的にr.jsを使用する可能性が最も高い)。

于 2013-08-07T02:42:01.140 に答える