要求编写一个 HTTP 服务器,每当接收到一个路径为 ‘/api/parsetime’ 的 GET 请求的时候,响应一些 JSON 数据。我们期望请求会包含一个查询参数(query string),key 是 “iso ,值是 ISO 格式的时间。如:/api/parsetime?iso=2015-11-17T12:10:15.474Z所响应的 JSON 应...
阅读全文 →
EventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。让我们以下面的例子解释这个过程://event.js 文件
var events&nbs...
阅读全文 →
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。EventEmitter 类eve...
阅读全文 →
功能主要用MySQL数据库,包括登录、注册、主页三部分;下面就一步步开始吧! 1.新建express + ejs 项目:usercd 工作目录
express -e user
cd user && npm install 2.创建数据库CREATE DATABAS...
阅读全文 →
不了解网络编程的程序员不是好前端,而NodeJS恰好提供了一扇了解网络编程的窗口。通过NodeJS,除了可以编写一些服务端程序来协助前端开
发和测试外,还能够学习一些HTTP协议与Socket协议的相关知识,这些知识在优化前端性能和排查前端故障时说不定能派上用场。本章将介绍与之相关的
NodeJS内置模块。开门红NodeJS本来的用途是编写高性能Web服务器...
阅读全文 →
使用NodeJS编写前端工具时,操作得最多的是文本文件,因此也就涉及到了文件编码的处理问题。我们常用的文本编码有UTF8和GBK两种,并且UTF8文件还可能带有BOM。在读取不同编码的文本文件时,需要将文件内容转换为JS使用的UTF8编码字符串后才能正常处理。BOM的移除BOM用于标记一个文本文件使用Unicode编码,其本身是一个Unicode字符(&qu...
阅读全文 →
遍历目录是操作文件时的一个常见需求。比如写一个程序,需要找到并处理指定目录下的所有JS文件时,就需要遍历整个目录。递归算法遍历目录时一般使用递归算法,否则就难以编写出简洁的代码。递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题。以下示例说明了这种方法。function factorial(n) {
&nb...
阅读全文 →
有经验的C程序员在编写一个新程序时首先从make文件写起。同样的,使用NodeJS编写程序前,为了有个良好的开端,首先需要准备好代码的目录结构和部署方式,就如同修房子要先搭脚手架。本章将介绍与之相关的各种知识。模块路径解析规则我们已经知道,require函数支持斜杠(/)或盘符(C:)开头的绝对路径,也支持./开头的相对路径。但这两种路径在模块之间建立了强耦...
阅读全文 →
在编写每个模块时,都有require、exports、module三个预先定义好的变量可供使用。requirerequire函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头)。另外,模块名中的.js扩展名可以省略。以下是一个例子。var foo...
阅读全文 →
安装首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。$ mkdir myapp
$ cd myapp通过 npm init 命令为你的应用创建一个 package.json 文件。
欲了解 package.json 是如何起作用的$ npm ...
阅读全文 →