分类标签归档:Node.js

Node.js api 中文文档 - Cluster#


稳定度: 2 - 稳定

单个的node.js实例运行在单线程上。为了享受多核系统的优势,用户需要启动一个node.js集群来处理负载。

cluster模块允许你方便地创建共享服务器端口的子进程:

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < n...

阅读全文...

Node.js api 中文文档 - Child Process


稳定度: 2 - 稳定

node.js通过child_process模块提供了三向的popen功能。

可以无阻塞地通过子进程的stdinstdoutstderr以流的方式传递数据。(注意某些程序在内部使用了行缓冲I/O,这不会影响node.js,但是这意味你传递给子进程的数据可能不会在第一时间被消费)。

可以通过require('child_process').spawn()require('child_process').fork()创建子进程。这两者间的语义有少许差别,将会在后面进行解释。

当以写脚本为目的时,你可以会觉得使用同步版本的方法会更方便。

Class: ChildP...

阅读全文...

Node.js api 中文文档 - Buffer


稳定度: 2 - 稳定

纯粹的JavaScript是Unicode友好的,但是不能很好地处理二进制数据。当处理TCP流或者文件流时,操作八进制流是必要的。node.js提供了多种策略来操作,创建和使用八进制流。

原始的数据被存储在Buffer类的实例中,一个Buffer类似于一个整数数组但是使用了V8堆之外的内存分配。一个Buffer不能被改变大小。

Buffer类是全局的,所以它是少数的不用require('buffer')就能使用的对象之一。

BufferJavaScript字符串对象之间的转换需要指定一个明确地编码方法。以下是一些不同的字符串编码。

'ascii' - 仅供7位的...

阅读全文...

Node.js api 中文文档 - Assert


稳定度: 2 - 稳定

本模块被用来为你的应用编写单元测试,你可以通过 require('assert')来使用它。

assert.fail(actual, expected, message, operator)

抛出一个打印实际值actual和期望值expected的异常,使用分隔符operator隔开。

assert(value[, message]), assert.ok(value[, message])

测试value是否为真,它等同于assert.equal(true, !!value, message);

assert.equal(actual, expected[, ...

阅读全文...

koa向导


Koa,下一代 Node.js web 框架

koa 简介

由 Express 原班人马打造的 koa,致力于成为一个更小、更健壮、更富有表现力的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升常用错误处理效率。Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。

安装 koa

Koa需要支持ES2015和async function的node v7.6.0或更高版本。

您可以使用喜欢的依赖管理工具快速安装支持的node版本:

$ nvm instal...

阅读全文...

Node.js流


Streams在Node.js核心API中可用作允许数据以连续方式读取或写入的对象。基本上,与缓冲区相比,流以块的形式执行该操作,逐位执行,从而使其成为一个缓慢的过程。

有四种类型的流可用:

  • 可读(从中读取数据的流)
  • 可写(写入数据的流)
  • 双工(可读和可写的流)
  • 转换(可在读取和写入时修改数据的双工流)

每种可用类型都有几种相关的方法。一些常见的是:

  • 数据(这在数据可用时运行)
  • 结束(当没有数据可供读取时触发)
  • 错误(当接收或写入数据时出错)

在编程中, pipe的概念并不新鲜。自20世纪70年代以来,基于Unix的系统一直在实用。管道做什么? pipe通常连接源和目的地。它...

阅读全文...

Node.js 进程对象


Node.js中的process对象是一个全局对象,可以在任何模块内访问,而不需要它。 Node.js中提供的全局对象或属性非常少,而process就是其中之一。它是Node.js生态系统中的一个重要组件,因为它提供了有关程序运行时的各种信息集。为了探索,我们将使用其中一个名为process.versions属性。此属性告诉我们有关已安装的Node.js版本的信息。它必须与-p标志一起使用。

$ node  -p "process.versions"

# output
{ http_parser: '2.8.0',
node: '8.11.2...

阅读全文...

Node.js NPM


Node.js可以在服务器上用JavaScript编写应用程序。它基于V8 JavaScript运行时构建,用C ++编写 - 所以速度很快。最初,它旨在作为应用程序的服务器环境,但开发人员开始使用它来创建模块以帮助他们进行本地任务自动化。从那时起,基于节点的工具的全新生态系统已经发展,以改变前端开发的面貌。

要在Node.js中使用这些模块(或包),我们需要能够以有用的方式安装和管理它们。这就是Node包管理器npm的用武之地。它安装了你想要使用的包,并提供了一个有用的界面来处理它们。

安装NPM

要安装npm我们必须在您当地的环境中下载Nodejs二进制文件。 Node.js二进制文...

阅读全文...

Node.js HTTP模块


Node.js有一组内置模块,无需进一步安装即可使用。类似地, HTTP模块 包含通过超文本传输​​协议(HTTP)传输数据所需的一组功能。

HTTP模块可以创建一个HTTP服务器,该服务器侦听服务器端口并将响应返回给客户端。

要包含模块,请使用require()函数和模块名称。

const http = require('http');

Node.js作为Web服务器

createServer()方法用于创建HTTP服务器。 res.writeHead()方法的第一个参数是状态代码, 200表示一切正常,第二个参数是包含响应头的对象。

const http = req...

阅读全文...

Node.js文件系统


Node.js文件系统模块允许您使用计算机上的文件系统。

Node.js有一组内置模块,无需进一步安装即可使用。类似地, 文件系统模块 包含一组函数,这些函数是对文件执行不同操作(如读写操作)所必需的。

要包含模块,请使用require()函数和模块名称。

const fs = require('fs');

文件系统模块的常用用法:

  • 读取文件
  • 创建文件
  • 更新文件
  • 删除文件
  • 重命名文件

读一个文件

fs.readFile()方法用于读取计算机上的文件。它需要三个参数 - 文件名,编码和回调函数。

Node.js代码从您的计算机读取文件并将内容返回到控制台。

const...

阅读全文...