定义
定义:单线程、事件驱动的非阻塞I/O,执行效率高
回调函数
node.js异步编程最直接的提现就是函数回调。node.js所有的API都支持回调函数。
事件循环
node.js基本上所有的事件机制都是使用观察者模式实现的。node.js单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都会生成一个事件观察者,如果有事件发生就调用该回调函数。
EventEmitter类
node.js 所有的异步I/O操作在完成的时都会发送一个事件到事件队列。
核心就是事件触发与事件监听器功能的封装。
Buffer(缓冲区)
js语言本身只有字符串类型,没有二进制类型。
Stream(流)
Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。
模块系统
为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。
函数
路由
文件系统
同步、异步
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
api
-
同步、异步
- readFileSync 阻塞代码
- readFile 非阻塞代码
- open() 异步打开文件
- stat() 异步模式获取文件信息
- writeFile() 写入文件
- close() 异步模式下关闭文件
- unlink() 异步删除文件
- mkdir() 创建目录
- rmdir() 删除目录
-
EventEmitter
- on(event, listener) 绑定事件,为指定事件注册一个监听器
- emit(event, [arg1], [arg2], [...]) 触发事件,按照监听器的顺序执行监听器
- addListener(event, listener) 为指定事件添加一个监听器到监听器数组的尾部
- once(event, listener) 为指定的事件注册一个单词监听器
- removeListener(event, listener) 移除指定事件的某个监听器
- removeAllListeners([event])移除所有事件的所有监听器
- setMaxListeners(n) 改变监听器的默认限制的数量
- listeners(event) 返回指定事件的监听器数组
-
Buffer
- from() 创建Buffer对象
- write() 写入缓冲区
- toString() 解码缓冲区数据
- toJSON() 转化为JSON对象
- concat() 缓冲区合并
- compare() 缓冲区比较
- copy() 缓冲区拷贝
- slice() 缓冲区裁剪
- length 缓冲区长度
-
模块系统
- require
var hello = require('./hello'); hello.world();- exports
exports.world = function() { console.log('Hello World'); } module.exports = function() { // ... }