在之前介绍 event loop 的章节,我们简单介绍了 events 模块的使用,它可以设置并监听某个信号并在信号触发时响应 callback function。

events 模块提供了 EventEmitter class 它是处理 events 的关键工具。

引入及初始化 events 模块如下:

const EventEmitter = require('events')
const eventEmitter = new EventEmitter()

每个 event listener 事件监听器都是互相独立的,同时它们使用如下 events:

  • newListener 当一个 event 被添加
  • removeListener 当一个 event 被删除

下面介绍常用的一些 method。

阅读全文


os 模块可以用来获取操作系统的底层信息和系统上运行的程序,以及和系统交互。

它集成在 node.js 中,只需要引入即可:

const os = require('os')

这里先介绍一些在处理文件时有用的 properties:

  • os.EOL 会返回 line delimiter 行定界符,\n on Linux and macOS, and \r\n on Windows
  • os.constants.signals 提供处理进程的信号常数,如:SIGHUP, SIGKILL
  • os.constants.errno 提供报告 error 的相关常数,如:EADDRINUSE, EOVERFLOW

完整的 signals 信号列表参考:https://nodejs.org/api/os.html#os_signal_constants

下面介绍 os 模块常用的 method。

阅读全文


上一章节我们了解了如果访问文件系统。使用到了 fs 和 path 模块的部分功能,下面我们详细了解这两个模块可以实现的功能。

fs module

通过以上几个使用场景可以看到 fs 模块提供了很多有用的功能来对 file system 进行访问和交互。并且他是集成在 node.js core 中的,并不需要手动安装:

const fs = require('fs')

阅读全文


File descriptor 文件描述器

当需要访问文件系统里的某个文件时,需要首先得到这个文件的 file descriptor 文件描述器。

一个 file descriptor 就是通过 fs 模块的 open() method 打开对应文件的返回数据。它的结构如下:

const fs = require('fs')

fs.open('./test.txt', 'r', (err, data) => {
    if (err) {
        console.log('open fail')
        return
    }
    console.log('open success')
})

如果文件打开成功,callback 中的 data 数据就是一个 file descriptor。注意并不是文件的内容。

这种方式是异步处理的,文件打开过程中系统会执行其他任务。

阅读全文