美文网首页nodejs
node.js学习(7)——node.js的模块化输入输出

node.js学习(7)——node.js的模块化输入输出

作者: YINdevelop | 来源:发表于2018-11-04 17:38 被阅读8次

    上一节-node.js学习(6)—ajax提交数据练习

    前几节,我们讲了通过nodejs来模拟接口,前台请求数据。本节我们开始讲解node的模块化。

    1.自定义模块

    前面,我们讲解了http、fs模块,这些模块都是node自己本身的模块,那么我们自己怎么自定义模块呢。


    1.jpg

    我们这里假设b.js是我们需要引入的模块。代码如下:

    var a=1;
    var b=2;
    

    我们在a.js中使用b;

    var mod=require('b.js');
    console.log(mod);
    

    运行代码我们会发现报错了

    Error: Cannot find module 'b.js'
    

    奇怪,我们明明已经引入了。现在,我们把代码修改下:

    var mod=require('./b.js');
    console.log(mod) //{}
    

    结果为空对象,但是没有报错,说明模块已经引入。对比之前的代码,发现我们在引入模块只多添加了./。原因是

    1.node.js中引入模块,如果不加./这类路径,它默认识别为自己的系统模块(实际也可以不加,后面我们会讲到)

    但是为空对象。这又是为什么?因为我们没有在模块b中没有导出。我们修改b模块为:

    exports.a=1;
    exports.b=2;
    

    在a模块中输出mod,结果为

    console.log(mod) //{a:1,b:2}
    

    所以

    2.node.js中,如果需要使用其他模块,需要使用exports导出所需要的内容。

    上面我们只定义了a,b两个变量,使用了两次exports,但是加入有很多需要多出的变量呢,当然又更简单的办法。我们修改b.js的代码如下

    module.exports={
        a:1,
        b:2
    }
    

    结果同样可以在a.js中获得导出的a,b两个变量。

    所以

    3.node.js中,可以使用module.exports导出多个模块。

    4.由于node.js中处理的就是js文件,所以我们在引入模块时候可以省略.js后缀

    即上面的代码可以改成

    var mod=require('./b');
    

    下一节-node.js学习(8)—npm介绍以及自定义模块的发布

    相关文章

      网友评论

        本文标题:node.js学习(7)——node.js的模块化输入输出

        本文链接:https://www.haomeiwen.com/subject/xuqdxqtx.html