4_Node模块系统

作者: 哈士奇大叔 | 来源:发表于2020-04-28 11:28 被阅读0次

[TOC]

Node.js模块系统

为了让Node的文件可以相互调用,Node提供了一个简单的模块系统
模块是Node应用程序的基本组成部分,文件和模块是一一对应的,一个Node文件就是一个模块,这个文件可能是js文件,也可能是json文件等

1.创建模块

一个Node js文件就是一个模块,所以我们创建一个modules1.js 的文件就是创建了一个模块。若要提供当前模块给另外模块使用,我们需要将文件导出

// 第一种:
exports.a=function(){
    console.log('这是我的第一个模块');
}
exports.b=function(){
    console.log(2);
}
exports.c=Math.PI;
exports.d={
    un:123,
    pw:234,
    sayHi:function(){
        console.log('qwer');
    }
}

以上实例中,modules1.js通过exports对象把a,b,c,d作为模块的访问接口;
我们也可以使用另外一种方式创建导出模块:

// 第二种:
class A{
    constructor(name,age){
        this.name=name;
        this.age=age;
    }
    sayHi(){
        console.log('我叫'+this.name+',我今年'+this.age);
    }
}
class B extends A{
    constructor(name,age,klass){
        super(name,age);
        this.klass=klass;
    }
    sayHi(){
        super.sayHi();
        console.log('我是的'+this.klass+'学生');
    }
}
module.exports={Person:A,Student:B};
// module.exports={A,B};
// module.exports=A;
// module.exports=function(){}

新建一个模块modules3.js,并且给module.exports赋值(赋值的类型可以是变量或对象或函数)的形式,同时导出模块中的class A和class B;使用这种方式也可以导出单个函数或类,均以赋值的形式使用。
相较于第一种方式唯一的变化是使用module.exports=xx代替了exports.xx=function(){};我们推荐大家使用第二种方式,它可以隐藏原有成员变量或成员函数的名称统一导出

2.引入,使用自定义模块

再创建一个modules2.js 的文件(第二个模块),并且在第二个模块中引入模块,并使用。

var mod1=require('./modules1');//引入模块
// 使用modules1模块中提供的访问接口
mod1.a();
console.log(mod1.c);

在modules2.js模块中通过require('./modules1')加载modules1模块,然后可以直接访问modules1模块中exports对象的成员函数。

3.require文件加载

require方法接受以下一种形式的参数

  • http,fs,path等,原生模块
  • ./mod 或者 ../mod, 相对路径的文件模块
  • /module/a, 绝对路径的模块
require('http');//原生模块
require('./mod')//自定义模块的引入
require('/module/a')// 绝对路径的模块

相关文章

网友评论

    本文标题:4_Node模块系统

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