Node.js 常用核心模块
核心模块是被编译成二进制代码,引用的时候只需 require 即可。下面对 Node.js 中的核心模块,做简要介绍。
事件 Events
事件模块是最重要的核心模块,所有能够触发事件的对象,都是EventEmitter
类的实例。通过这个模块,我们可以建立自己的事件监听、触发和移除机制。
挂接模块
const EventEmitter = require('events')
实例化一个 EventEmitter 对象
class MyEmitter extends EventEmitter {}const myEmitter = new MyEmitter()
注册事件
emitter.on( 'Event_Name' , callBack_Fun )emitter.once( 'Event_Name' , callBack_Fun ) //注册一个单次监听器,触发一次后立刻解除
触发事件
event.emit('Event_Name' , 参数 1, 参数 2);
移除事件
emitter…removeListener(‘Event_Name’ , callBack_Fun)emitter.removeAllListeners( [‘Event_Name’] ) //如果指定了事件名,就移除指定的,否则移除所有事件
一个案例:
// 引入 events 核心模块const EventEmitter = require('events')// 创建一个继承 events 的类class MyEmitter extends EventEmitter {}// 实例化 events 对象const myEmitter = new MyEmitter()// 使用 on 方法创建一个 play 事件及响应方法myEmitter.on('event1',()=>{ console.log('event1 事件已被触发!')})// 使用 on 方法创建一个 play 事件及响应方法myEmitter.on('event2',(a,b)=>{ console.log(`event2 事件已被触发!并且接收到了 ${a}、${b}事件参数`)})// 使用 emit 方法触发事件myEmitter.emit('event1')// 传递事件参数myEmitter.emit('event2','a','b')
运行结果如下:
event1 事件已被触发!event2 事件已被触发!并且接收到了 a、b 事件参数
File System 模块
文件系统模块提供了标准的文件操作功能,而且,这些方法都提供异步和同步形式。强烈建议开发者使用异步版本,同步版本的文件操作会阻塞整个线程,直到操作完成为止。当然,在有必要的时候,我们必须要使用同步版本的方法。
异步操作形式始终拥有回调函数,且回调函数是最后一个参数。示例如下:
const fs = require('fs');
fs.writeFile('test.txt', 'hello fs \n', (err) =>{ if (err) { throw err;}; console.log('成功创建并写入文件');});
stat 获得文件信息
stat()
方法能获得文件的详细信息,如大小、创建时间、修改时间、拥有者、群组信息、文件类型信息等等。stat()
方法的回调函数有两个参数,第一个是错误信息,第二个是 Stats 对象。
fs.stat('test.txt', (err,stats) => { if (err) { console.log(err) } else { console.log(stats) console.log(`文件:${stats.isFile()}`) }})
上述代码的运行结果如下:
Stats { dev: 39, mode: 33188, nlink: 1, uid: 1000, gid: 1000, rdev: 0, blksize: 4096, ino: 1413, size: 10, blocks: 8, atimeMs: 1528004135000, mtimeMs: 1528003341000, ctimeMs: 1528003341000, birthtimeMs: 1528003341000, atime: 2018-06-03T05:35:35.000Z, mtime: 2018-06-03T05:22:21.000Z, ctime: 2018-06-03T05:22:21.000Z, birthtime: 2018-06-03T05:22:21.000Z }文件:true
mkdir
mkdir() 方法能创建一个目录。该方法创建的目录默认值为0o777
。
fs.mkdir('log',(error)=>{ if (error) { console.log(error) } else { console.log('目录创建成功') }})
创建文件并写入内容
fs.writeFile() 方法可以创建文件并将内容写入文件中。方法用法如下:
fs.writeFile(file, data[, options], callback)
读取内容
fs.readFile() 方法可以读取文件中的内容,用法如下:
fs.readFile(path[, options], callback)
其中options
可以用来指定读取时的编码方式(默认为 null)和打开方式(默认为 r)。
列出目录
fs.readdir() 方法可以读取指定目录中的文件名称,并以数组的形式返回。
重命名
fs.rename() 方法可以重命名文件、目录名称。
删除目录与文件
fs.rmdir() 用来删除目录,fs.unlink() 用来删除文件。