1. http模块

用来搭建本地服务器

const http = require('http'), 
http.createServer创建一个服务。

2. fs文件系统模块

赋予node读取本地文件的能力

const fs = require('fs');

fs.writeFile(path, fileData, cb) // 写入文件

fs.readFile(path, cb) // 读取文件

3. path路径模块

用来处理路径相关

const path = require('path')

let str = '/c/dir/index.html'

console.log(path.dirname(str))

path.resolve() // 路径解析,用来拼合路径,返回一个绝对路径

4. ur模块

用来处理网址相关,或者用来获取地址路径或参数

const url = require('url')

let site = 'http://www.a.cn/a/b/index.html?a=1&b=2'

let {pathname, query} = url.parse(site, true) //解析网址 true就是将参数解析为对象

console.log(pathname, query)
// '/a/b/index.html' {a: '1', n: '2'}

5. querystring 查询字符串模块

主要用来将参数拼接字符串解析为对象

const queryString = require('querystring')

let str = 'a=1&b=2&c=3'
let obj = queryString.parse(str)

console.log(obj, obj.a) //{a:'1',b:'2',c:'3'}, '1' 

let o = queryString.stringify(obj)
console.log(0) // 'a=1&b=2&c=3'

6. assert 断言

判断条件是正确,如果正确则继续执行,如果错误则抛出异常

const assert = require('assert')

// assert.deepEqual(变量,预期值,错误信息)   变量 == 预期值
// assert.deepStrictEqual(变量,预期值,错误信息)  变量 === 预期值
// 同样也是错误的时候抛出信息,正确的时候继续默默执行

const obj = {a: {b: 1}}
const obj1 = {a: {b: 1}}

assert.deepEqual(obj, obj1, '不等') // true

7. stream 流

以工作流的模式,读取文件,使得文件的读取跟水流一样。一边读取一边使用。合理分配内存,避免内存爆掉的风险

const fs = require('fs')

// 读取流:fs.createReadStream();
// 写入流:fs.createWriteStream();

let rs = fs.createReadStream(a.txt)     // 读取的文件
let ws = fs.createWriteStream(a2.txt)   // 写入的文件

rs.pipe(ws) // pipe将rs 和 ws 连接起来,使得读取流的数据传输到输出流

rs.on('error', err => {
  console.log(err);
});
ws.on('finish', () => {
  console.log('成功');
})

8. zlib压缩

用来将文件压缩

const fs = require('fs')
const zlib = require('zlib')

let rs = fs.createReadStream('a.jpg')
let gz = zlib.createGzip()
let ws = fs.createWriteStream('a.jpg.gz')

rs.pipe(gz).pipe(ws) // 原始文件 => 压缩 => 写入

rs.on('error', err => {
  console.log(err);
});
ws.on('finish', () => {
  console.log('成功');
})