3

これを行うためのより良い方法があるかどうか疑問に思っています:

module.exports.foo = "bar";
module.exports.bar = "baz";
module.exports.foobar = "foobaz";

'with' (およびその危険性) について聞いたことがありますが、オブジェクトに新しいプロパティを追加できず、既存のプロパティのみを変更できるため、ここでは機能しません。実際、新しいプロパティを追加しようとすると、囲んでいるスコープを壊してしまい、あまり良くありません。

このようなものがいいでしょう:

module.exports += {
  foo: "bar",
  bar: "baz",
  foobar: "foobaz"
}

しかし、それは私が望むものではない、それらを連結する前に両側を文字列に変換します。

そのようなシンタックス シュガーは Node.JS フレーバーの JavaScript に存在しますか? 一度に多くのプロパティを追加するための「モジュール」の関数でしょうか?

4

3 に答える 3

3

それらをループしてmodule.exportsに追加する簡単な関数を作成するか、jqueryを模倣しようとするnode.extendを試すことができます$.extend()

于 2013-07-05T03:55:16.450 に答える
0

_.extend の使用を検討してください

あなたの例では:

            module.exports += {
              foo: "bar",
              bar: "baz",
              foobar: "foobaz"
            }

だろう:

            var _ = require('underscore');

            _.extend(module.exports,
                {
                  foo: "bar",
                  bar: "baz",
                  foobar: "foobaz"
                }
            );

または、依存関係が不要な場合は、生の JavaScript を使用します。

            function myExtend(dest, obj) {
                for (key in obj) {
                    var val = obj[key];
                    dest[key] = val;
                }
            }
            myExtend(module.exports,
                {
                  foo: "bar",
                  bar: "baz",
                  foobar: "foobaz"
                }
            );

後者の方法を使用している場合は、ここでは説明していないエッジ ケースを確認してください。

于 2013-07-05T04:35:23.330 に答える