string(1) "5" web | Marco Nie
分类 web 下的文章

Streams 是驱动 node.js 程序的核心概念。它提供了处理对文件的读写,网络传输,或者其他端到端的数据交换的更加高效的方式。

streams 流并不是 node.js 首先引入的概念,unix 操作系统在很久之前就在使用了,一个程序可以通过 pipe 管道操作符 | 来传递 streams 流给其他程序。

下面的示例是在 Linux 中,通过 pipe 管道将 cat 读取的文件数据传递给 grep 进行过滤,test.txt 文件内容如下:

aaa bbb
bbb ccc
aaa ccc
$ cat test.txt | grep aaa
aaa bbb
aaa ccc

阅读全文


一个 buffer 缓存就是一个内存空间。JavaScript 开发者相较于 c++/go 等语言的开发者对内存的理解比较少。它表示在 JavaScript V8 engine 之外的分配的一块 fixed-size 固定大小的内存。可以想象 buffer 就是一个 integer 整型数组,每个元素代表一个 byte 的数据。

node.js 中 buffer 通过 Buffer class 实现。

阅读全文



在之前介绍 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。

阅读全文