ノードモジュールは、基本的に次のように動作します。
var module = {
exports: {}
};
(function (exports, require, module, __filename, __dirname) {
// your module code here
})(module.exports, require, module, __filename, __dirname);
var exported = module.exports;
デフォルトで
、exports
、およびmodule.exports
は両方とも同じオブジェクトを指しています。通常どおりオブジェクトにプロパティを追加できます。ただし、デフォルトの標準オブジェクトの代わりに関数やその他のオブジェクトを返す場合はどうしますか?
この場合、module.exports
を別のものに設定することができます。これが新しいエクスポートオブジェクトになります。
module.exports = function() {};
そしてもちろんの
は、その機能があまりにも特性を有することができるので、あなたのコードは次のような種類-のである:
var morgan = function() {};
var compile = function() {};
var format = function() {};
var token = function() {};
morgan.compile = compile;
morgan.format = format;
morgan.token = token;
module.exports = morgan;
:に相当します
module.exports = function(){};
module.exports.compile = function() {};
module.exports.format = function() {};
module.exports.token = function() {};
function(morgan)はmodule.exportsにどのように割り当てられていますか?最初の行が実行された後、module.exportsはJSONオブジェクトではなく関数ですか?
はい、module.exports
は(ただしここにはJSONがない、JSONはJavaScriptオブジェクトが、符号化形式ではありません)デフォルトのオブジェクトの代わりに、関数であろう。
私は "Nodejsモジュールは混乱を輸出する"と読んでいます。 (そのために+1された) – sweaver2112