如何创建NodeJS模块?

时间:2016-03-09 10:02:10

标签: node.js

我已阅读NodeJS网站的详细信息:https://nodejs.org/api/modules.html。我不明白模块是如何工作的,创建模块的最小步骤是什么,以及npm如何帮助我。

如何创建模块?
我如何使用模块?
把它放在npm上是什么意思?

  

注意:这是一个自我回答的问题,目的是将知识分享为规范。

2 个答案:

答案 0 :(得分:14)

您可以使用一行代码创建NodeJS模块:

//mymodule.js

module.exports = 3; 

然后您可以使用require:

加载模块
//app.js

require('./mymodule.js')

我添加了'./',因为它是一个文件的模块。我们稍后会介绍它。

现在,如果您这样做:

var mymodule = require('./mymodule.js');
console.log(mymodule); // 3

您可以使用功能替换数字3,例如:

//mymodule.js:
module.exports = function () {
  console.log('function inside the module');
};

然后你可以使用它:

var mymodule = require('./mymodule.js');
mymodule();

私有变量:

您在A模块中定义的每个变量都只在其中定义:

//mymodule.js
var myPrivateVariable = 3;
publicVariable = 5;   // Never user global variables in modules
                      //It's bad-pracrtice. Always add: var.
module.exports = function() {
  // Every function of the module can use the private variables
  return myPrivateVariable++
};

//app.js

var mymodule = require('./mymodule.js');
console.log(mymodule()); // return 3
console.log(mymodule());  // return 4

重用模块:

您需要了解的有关NodeJS模块的另一件事是,如果您使用相同的模块两次(需要它),它将返回相同的实例,它将不会运行两次。

例如:

//app.js

var mymodule1 = require('./mymodule.js');
var mymodule2 = require('./mymodule.js');
console.log(mymodule1()); //return 3
console.log(mymodule2()); //return 4 (not 3)
console.log(mymodule1()); //return 5 

如下例所示,该私有变量在模块的所有实例之间共享。

模块包

如果您的模块包含多个文件,或者您想与其他人共享模块,则必须在单独的文件夹中创建模块,并为模块创建package.json文件。

npm init将为您创建package.json文件。 对于模块,有3个必需部分:

的package.json

{
  "name" : "You module name",
  "version" : "0.0.3"
}

现在,您可以使用npm publish发布模块。我建议您将所有模块发布到github,然后模块将连接到您的github页面。

每个人都可以访问您向NPM发布的内容。所以永远不要发布包含私有数据的模块。为此,您可以使用私人npm模块。

后续步骤

模块可以返回多个函数或一个变量。请参阅我们返回对象的示例。

module.exports.a = function() {
  // ..
};
module.exports.b = function() {
  // ..
};

// OR

myObj = {
  a:3,
  b:function() {
    return this.a;
  }
};
module.exports = myObj;

更多信息:

相关问题:

答案 1 :(得分:4)

在node.js中创建模块非常简单!!!

您可以将模块视为一组功能,只需要它就可以在其他代码中使用。 例如:考虑具有以下内容的文件functional.js:

function display(){
    console.log('i am in a display function');
    }
module.exports = display;

现在只需要在任何其他模块中使用它:

var display = require('./functional');
display()

输出:我处于显示功能

同样可以:

var exports = module.exports = {};
exports.display = function(){
    console.log('i am in the display function');
}

或者您对以下对象执行相同的操作:

var funObj = {
    hello:function(){
            console.log('hello function');
          },
    display:function(){
            console.log('display function');
          }
};
module.exports = funObj;