模块特点
- Node JS采用CommonJS规范实现模块系统。
- 规范中一个文件就是一个模块。
- 规范中每个文件中的变量、函数都是私有的,对其他文件不可见的。
- 每个文件中的变量、函数必须通过exports暴露出来之后其他文件才可以导入使用。
- 要想使用其他文件暴露出来的变量、函数必须通过require()导入模块才可以使用。
例如:
moduleA.js
function text(){
console.log("aaa");
}
function upper(str){
return str.substring(0,1).toUpperCase()+str.substring(1)
}
// module.exports={
// text,
// upper
// }
exports.text=text
exports.upper=upper
moduleB.js
var a=require('./moduleA')
function text(){
console.log("bbb");
}
console.log(a.upper("lhh"))//导入该文件时就会打印“Lhh”
module.exports=text
index.js
var a=require('./moduleA')
var b=require('./moduleB')
var c=require('./moduleC')
console.log(a);//{ text: [Function: text], upper: [Function: upper] }
a.text()//调用moduleA.js中暴露出来的text()函数,打印"aaa"
b()//调用moduleB.js中暴露出来的函数,打印"bbb"
导出数据的方式
- 通过
exports.xxx=xxx导出 - 通过
module.exports.xxx=xxx或者module.exports={xxx1,xxx2}
require
require导入模块时可以不添加导入模块的类型即后缀。- 如果没有指定导入模块的类型,那么会依次查找
.js``.json``.node文件。 - 无论是三种类型中的哪一种,导入之后都会转换成JS对象返回给我们。
- 如果没有指定导入模块的类型,那么会依次查找
- 导入自定义模块时必须指定文件路径。
- 导入内置模块和第三方模块时是不用添加路径的。