【发布时间】:2013-12-30 08:16:28
【问题描述】:
根据 Node.js 手册:
如果您希望模块导出的根是一个函数(例如 构造函数),或者如果您想在一个中导出一个完整的对象 分配而不是一次构建一个属性,将其分配给 module.exports 而不是 export。
给出的例子是:
// file: square.js
module.exports = function(width) {
return {
area: function() {
return width * width;
}
};
}
并像这样使用:
var square = require('./square.js');
var mySquare = square(2);
console.log('The area of my square is ' + mySquare.area());
我的问题:为什么示例不使用正方形作为对象?以下内容是否有效,是否使示例更加“面向对象”?
var Square = require('./square.js');
var mySquare = new Square(2);
console.log('The area of my square is ' + mySquare.area());
【问题讨论】:
-
您的示例是语法错误。将
square重命名为Square后,new square()不再存在。 -
抱歉,打错了。修复。我的意图是显示以大写开头的对象/函数名称和以小写开头的实例名称。
-
我想了这么多,这就是我写my answer的原因。我只是想说,我真的很高兴其他人以同样的方式看待模块。我经常使用 new 关键字并组织我的模块以导出单个构造函数。我发现它使解决方案的可读性和概念化更容易。我一眼就能看出我打算使用什么样的构造。像我一样思考的荣誉;)
标签: javascript node.js commonjs