NodeJS学习笔记之Node的模块

62 阅读1分钟

一、全局模块

定义:何时何地都能访问,不需要引用。

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)// 创建服务器,必须使用监听端口