• 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的键,指明模块目录内主文件的路径。

    
    
  • 相关阅读:
    CodeForces
    [AHOI 2013] 差异
    BZOJ
    [校内训练20_09_15]ABC
    [校内训练20_09_10]ABC
    [校内训练20_09_08]AC
    fastIO
    [校内训练20_06_05]ABC
    [校内训练20_06_04]ABC
    [校内训练20_06_03]ABC
  • 原文地址:https://www.cnblogs.com/zoumiaomiao/p/4953809.html
Copyright © 2020-2023  润新知