基本的に、クライアント側でも使用できる便利なJSであるノードモジュールを作成しました。 require.jsがcommon.jsコンポーネントをロードできることは知っていますが、モジュールのクライアント側を使用するすべての人がrequireまたはcommon.jsなどを必要とすることを必ずしも義務付けたくはありません。また、ファイルの下部にあるmodule.exports = ...
を強制的に削除したくありません。他の人はこの問題をどのように解決しますか? 2つのバージョンを作成するだけですか、それとも2つの「コンパイル済み」バージョンを作成するだけですか。 module.exportsはどこでも機能しますか?
これはunderscore.jsが行うことです:
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _;
} else {
root['_'] = _;
}
私はこれがより簡単だと思います:
try {
module.exports = exports = MyModule;
} catch (e) {}
このファイルは、ブラウザーとnode.jsの両方に含めることができます。
これは私にとってはうまくいきました(CoffeeScript)。 「名前空間」がクライアントのwindow
スコープで要求するものであると想定します
_(module ? {}).exports = @Namespace =
my: 'cool'
module: '!'
_
次に、Node.jsでrequire('namespace').my === 'cool'
を使用するか、ブラウザーで_Namespace.my === 'cool'
_を使用できます。これはJSに変換されます
_(typeof module !== "undefined" && module !== null ? module : {}).exports = this.Namespace = {
my: 'cool',
module: '!'
};
_