什么是exports.install在节点js?

时间:2016-07-28 13:24:22

标签: node.js

您好我发现framework他们使用了很多这种模式。

exports.install = function(){
//code
}

但通常你会在nodejs中看到这种模式

module.exports = {
//code
}

这是同一件事还是别的什么?

2 个答案:

答案 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 !

所以,它只是开发者的风格。