0

すべてのモジュールの依存関係を という名前の新しいファイルに分割し、dependencies.jsそのファイルをたとえばserver.js. これらすべての必要なものを返すにはどうすればよいですか?

var express = require('express')
  , stylus = require('stylus')
  , fs = require('fs')
  , https = require('https')
  , app = express();
4

1 に答える 1

1

globalそれらをオブジェクトに割り当てる必要があるため、まったく行うべきではありません

global.express = require('express');
global.stylus = require('stylus');
global.fs = require('fs')
global.https = require('https')
global.app = global.express();

実際にはこれを行わない理由はたくさんありますが、要約します。まず、モジュール (例: var Foo = require('foo')) で変数を宣言するとき、その変数はそのモジュールのローカル スコープの一部であることを知っています。global一方、すべてのモジュールに対してグローバルです。すべてのモジュールが、実行時の特定の時点でいずれかの状態にあるとは保証できない重要なもののために同じ名前空間を共有することの意味について考えてみてください (global実際には、ノードがそうする必要があると判断するたびにリセットされます!)。複数のプロセスを使い始めると、この問題は悪化する可能性があります(@Hippoが言及したが説明しなかったように)。

最初はこれが良いアイデアのように思える理由はわかりますが、この手法で得られるわずかな DRY は、コードに隠れている予期しないエラーと比較すると見劣りします。

とにかく、各モジュールで依存関係を明示的に宣言する方がはるかに優れています。すべてのモジュールで dep のリストを共有すると、プログラムの論理構造がわかりにくくなります。

于 2012-06-07T23:16:41.557 に答える