node-创建模块

1.创建模块

创建模块格式如下

 var canadianDollar = 0.91;
    function roundTwoDecimals(amount){
          return Math.round(amount*100)/100;
    }
    exports.canadian = function(canadian){
        return  roundTwoDecimals(canadian*canadianDollar);
    }
canadianDollar 这个变量属于私有变量,外部文件很难访问到,使用这个新模块,要用到require函数。该函数要你用模块的路径为参数,它一般在文件的顶端引入,下面是text.js中的代码,它require了上面的模块exports.js
var currency = require('./exports');//路径./ 表明模块跟程序脚本放在同一个目录下。
console.log(currency.canadian(10));

 如果你想把这个模块放到子目录中,比如lib,只要把require语句改成下面这样就可以了:

var currency = require('./lib/exports');

//上面的代码演示了直接把函数封装到模块当作,接下来演示如何把一个对象封装到模块当中。修改exports.js如下:

function calc(){
var x,y;
  this.add = function(a,b){
    console.log("x乘以y"+" "+a*b);
  }
  this.sum = function(){
    console.log("x乘以y"+(x+y));
  }
}
module.exports = calc;
var module=require("./exports");
var moduleEntity =new module();
moduleEntity.add(1,2);

把一个calc函数封装到模块里面,然后导出为calculator对象,可以通过实例化这个calculator对象来调用相关算法函数

2:用module.exports微调模块的创建

要创建只返回一个变量或函数的模块,你可能会以为只要把exports设定成你想返回的东西就行。但这样是不行的,因为Node觉得不能用任何其他对象、函数或变量给exports赋值。下面这个代码清单中的模块代码试图将一个函数赋值给exports

exports =xxx//xxx代表函数、对象或变量

node不容许重写exports,

为了让前面那个模块的代码能用,需要把exports换成module.exports。用module.exports可以对外提供单个变量、函数或者对象。如果你创建了一个既有exports又有module.exports的模块,那它会返回module.exports,而exports会被忽略。

exports.xx是对module.exports.xx的简写。也可以写成module.exports.xx = exports = xxx;

3:注意事项

尽管Node模块系统的本质简单直接,但还是有两点需要注意一下。第一,如果模块是目录,在模块目录中定义模块的文件必须被命名为index.js,除非你在这个目录下一个叫package.json的文件里特别指明。要指定一个取代index.js的文件,package.json文件里必须有一个用JavaScript对象表示法(JSON)数据定义的对象,其中有一个名为main的键,指明模块目录内主文件的路径。


原文地址:https://www.cnblogs.com/zoumiaomiao/p/4953809.html