核心模块
核心模块path
- 内置模块,require之后直接使用,主要作用:用于处理文件/目录的路径
- basename() 获取路径中基础名称
- dirname() 获取路径中目录名称
- extname() 获取路径中扩展名称
- isAbsolute() 获取路径是否为绝对路径
- join() 拼接多个路径
- resolve() 返回绝对路径
- parse() 解析路径
- format() 序列化路径
- normalize() 规范化路径
const path = require('path')
console.log('__filename', __filename)
console.log(path.basename(__filename))
console.log(path.basename(__filename, '.js'))
console.log(path.basename('/a/b/c'))
console.log(path.basename('/a/b/c/'))
console.log(path.dirname(__filename))
console.log(path.dirname('/a/b/c'))
console.log(path.dirname('/a/b/c/'))
console.log(path.extname(__filename))
console.log(path.extname('/a/b/c'))
console.log(path.extname('/a/b/.html.js.css'))
const obj = path.parse('/a/b/c/index.html')
console.log(obj)
const obj1 = path.parse('/a/b/c')
console.log(obj1)
const obj2 = path.parse('./a/b/c/')
console.log(path.format(obj2))
console.log(path.isAbsolute('foo'))
console.log(path.isAbsolute('/foo'))
console.log(path.isAbsolute('////foo'))
console.log(path.isAbsolute(''))
console.log(path.isAbsolute('.'))
console.log(path.isAbsolute('../bar'))
console.log(path.join('a/b', 'c', 'index.html'))
console.log(path.join('/a/b', 'c', 'index.html'))
console.log(path.join('/a/b', 'c', '../', 'index.html'))
console.log(path.join('/a/b', 'c', './', 'index.html'))
console.log(path.join('/a/b', 'c', '', 'index.html'))
console.log(path.join(''))
console.log(path.normalize(''))
console.log(path.normalize('a/b/c/d'))
console.log(path.normalize('a//b/c../d'))
console.log(path.normalize('a//\\/b/c\\/d'))
console.log(path.normalize('a//\\b/c\\/d'))
console.log(path.resolve())
console.log(path.resolve('a', 'b'))
console.log(path.resolve('a', '/b'))
console.log(path.resolve('/a', '/b'))
console.log(path.resolve('/a', 'b'))
console.log(path.resolve('index.html'))
全局变量之Buffer
- 无须 require 的一个全局变量
- 实现 Nodejs 平台下的二进制数据操作
- 不占据 V8 堆内存大小的内存空间
- 内存的使用由Node来控制,由v8的GC回收
- 一般配合Stream 流使用,充当数据缓冲区
创建Buffer
- 创建 Buffer 实例
- ·alloc:创建指定字节大小的 buffer
- ·allocUnsafe:创建指定大小的buffer(不安全)
- ·from:接收数据,创建buffer
const b1 = Buffer.alloc(10)
console.log(b1)
const b2 = Buffer.allocUnsafe(10)
console.log(b2)
const b3 = Buffer.from('1', 'utf-8')
const b4 = Buffer.from('哈', 'utf-8')
console.log(b3)
console.log(b4)
const b5 = Buffer.from([1, 2, 3])
console.log(b5)
const b6 = Buffer.from([1, 2, '哈'])
console.log(b5)
const b7 = Buffer.from('哈', 'utf-8')
console.log(b7.toString())
const b8 = Buffer.from([0xe5, 0x93, 0x88])
console.log(b8.toString())
Buffer实例方法
- fill:使用数据填充buffer
- write:向buffer中写入数据
- toString:从buffer中提取数据
- slice:截取buffer
- indexOf:在buffer中查找数据
- copy:拷贝buffer中的数据
let buf = Buffer.alloc(6)
buf.fill('123')
buf.fill('123456789')
buf.fill('123', 1)
buf.fill('123', 1, 3)
buf.fill('123', 1, 2)
buf.fill(123)
console.log(buf)
console.log(buf.toString())
let buf1 = Buffer.alloc(6)
buf1.write('123')
buf1.write('123', 1)
buf1.write('123', 1, 3)
buf1.write('123', 1, 2)
console.log(buf1)
console.log(buf1.toString())
let buf2 = Buffer.from('学习学习')
console.log(buf2)
console.log(buf2.toString('utf-8'))
console.log(buf2.toString('utf-8', 3))
console.log(buf2.toString('utf-8', 3, 9))
let buf3 = Buffer.from('学习学习')
console.log(buf3.slice())
console.log(buf3.slice(3))
console.log(buf3.slice(3, 9))
console.log(buf3.slice(-3))
let buf4 = Buffer.from('学习学习,饿abc也是,撒大大')
console.log(buf4.indexOf('饿'))
console.log(buf4.indexOf('阿訇'))
console.log(buf4.indexOf('学'))
let buf5 = Buffer.alloc(6)
let buf6 = Buffer.from('学习123')
buf6.copy(buf5)
buf6.copy(buf5, 3)
buf6.copy(buf5, 3, 3)
buf6.copy(buf5, 3, 3, 6)
console.log(buf5.toString())
console.log(buf6.toString())
Buffer静态方法
- concat:将多个 buffer 拼接成一个新的 buffer
- isBuffer:判断当前数据是否为 buffer
let b1 = Buffer.from('学习')
let b2 = Buffer.from('自学')
console.log(Buffer.concat([b1, b2]).toString())
console.log(Buffer.concat([b1, b2], 9).toString())
let b1 = Buffer.alloc(3)
let b2 = ''
console.log(Buffer.isBuffer(b1))
console.log(Buffer.isBuffer(b2))