require(): 使用module.exports还是直接赋值给"this"?

7
我在想,使用这两种方法相互对抗时是否存在优缺点:

first.js:

this.myFunction = function() {
    return 'herro first';
}

second.js:

module.exports = obj = {};
obj.myFunction = function() {
    return 'herro second';
}

上述两个内容将被包含并使用如下:
app.js:
var first = require('./first.js');
console.log(first.myFunction());

var second = require('./second');
console.log(second.myFunction());

这是两种不同的导出函数的方式,而不是导入函数。 - Bergi
1
覆盖module.exports是一种反模式,尤其是当你不需要这样做时。相反,可以使用var obj = module.exports;(它也是本地的),或直接使用module.exports.myFunction = ... - Bergi
3
在模块中使用 this 是可行的,但是对于所有人来说,module.exports 更加明确和清晰。 - Bergi
@Bergi 你能详细解释一下反模式吗? - basickarl
1个回答

2

module.exports(或仅使用exports)是标准的CommonJS方式。

在Node.js中,this恰好是相同的对象,但最好不要依赖它,并且使用this将无法与其他工具一起使用,例如Browserify。


1
一个解释它的实际答案,谢谢! - basickarl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接