Node.js学习

165 阅读2分钟

定义

定义:单线程、事件驱动的非阻塞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() {
      // ...
    }