一、全局模块
定义:何时何地都能访问,不需要引用。
process.env 返回项目运行所在的环境变量信息。
process.argv 参数数组 (能接收通过命令执行node程序时所传入的参数),
参数1:返回当前node所在路径,参数2:返回当前文件路径
例子(index.js):
let num1 = parseInt(process.argv[2]);
let num2 = parseInt(process.argv[3]);
console.log(num1 + num2);
输入命令:
node index 2 3
输出:
5
二、系统模块
定义:需要require()引用,但不需要下载(安装node时已经内置好)。
path:用于处理文件路径和目录路径的实用工具。
let path = require('path')
p = '/node/a/1.jpg'
path.dirname(p) //路径(/node/a)
path.basename(p) //文件名(1.jpg)
path.extname(p) //文件扩展名(.jpg)
fs:用于文件读写操作。
let fs = require('fs')
fs.readFile('./a.text',(err,data) => {
if(err) {
console.log(err)
} else {
console.log(data.toString())
}
})
// 往文件添加内容
fs.writeFile('a.txt', '测试', { flag: 'a' }, (err) => {
if (err) {
throw err
}
})
三、自定义模块
定义:require自己封装的模块。
1、require
1)如果有路径,就去路径里面找;
const mod1 = require('./mod')
2)如果没有,就去node_modules里面找;
const mod1 = require('mod')
3)如果都没有,则去node的安装目录里面找。
2、exports 和 module
1)值
exports.a = 1;
exports.b = 2;
let c = 3;
使用:
mod1.a mod1.b
2)对象
module.exports = { a:1, b:2 }
使用:
mod1.a mod1.b
3)函数
module.exports = function() { }
使用:
mod1()
4)类
module.exports = class {
constructor(name) { this.name = name }
show() { console.log(this.name) }
}
使用:
let p = new mod1('myname');
p.show()
四、http模块(重点)
模板字符串 `
(数字1左边的键),才能识别 ${}
。
let http = require('http')
let fs = require('fs')
http.createServer((request, response) => { // 创建http服务
fs.readFile(`./${request.url}`, (err, data) => { // 读取文件(路径、回调)
if (err) {
response.writeHead(404) //200 是默认可不写
response.end('404 not found')
} else {
response.end(data)
}
})
}).listen(8088)// 创建服务器,必须使用监听端口