您好我发现framework他们使用了很多这种模式。
exports.install = function(){
//code
}
但通常你会在nodejs中看到这种模式
module.exports = {
//code
}
这是同一件事还是别的什么?
答案 0 :(得分:1)
exports
是与module.exports
对应的对象。我认为这是由于一些遗留代码,但如果他们想用自己的对象或函数替换整个对象,他们基本上会使用module.exports
,而如果他们只是想要使用exports
将功能挂起模块。起初它有点令人困惑,但基本上exports.install
只是意味着调用代码会做类似的事情:
const mod = require('that-module');
mod.install(params, callback); // call that function
您正在查看的框架可能正在将其用作引导过程的一部分,但它对节点引擎本身并不具有重要意义。
答案 1 :(得分:0)
是的,这是一回事。您可以使用以下两种方法之一来设置代码。
不同的是memory
。他们指向相同的记忆。您可以将exports
视为变量,并且不能使用这种方式导出模块:
鉴于此模块:
// test.js
exports = {
// you can not use this way to export module.
// because at this time, `exports` points to another memory region
// and it did not lie on same memory with `module.exports`
sayHello: function() {
console.log("Hello !");
}
}
以下代码将收到错误:TypeError: test.sayHello is not a function
// app.js
var test = require("./test");
test.sayHello();
// You will get TypeError: test.sayHello is not a function
您必须使用module.exports
导出模块的正确方法:
// test.js
module.exports = {
// you can not use this way to export module.
sayHello: function() {
console.log("Hello !");
}
}
// app.js
var test = require("./test");
test.sayHello();
// Console prints: Hello !
所以,它只是开发者的风格。