node学习笔记

1、node回调函数:

  node使用回调函数,实现异步编程,达到非阻塞流程。

  node是单线程,但所有api都是异步,实现并发

  node基本所有的事件机制都是观察者模式

2、node事件驱动程序

  我的理解:node将所有的请求或事件等io操作都丢进eventloop里,然后由eventloop循环检测达到触发条件的回调函数并执行。

3、eventEmitter

//event.js 文件
var EventEmitter = require('events').EventEmitter; 
var event = new EventEmitter(); 
event.on('some_event', function() { 
    console.log('some_event 事件触发'); 
}); 
setTimeout(function() { 
    event.emit('some_event'); 
}, 1000); 

eventEmitter的api:

  addListner(event,listener):给事件添加监听器到尾部

  emit(event):触发事件

  on(event,listener):给事件注册监听器

  once(event,listener):给事件注册一次性监听器

  removeListener(event,listener):给事件删除监听器,此处的监听器必须为实名函数

  removeAllListener(event):移除所有监听器

  setMaxListeners(n):设置最大的监听器数量

4、Buffer

  node的一个类,用于创建存放二进制数据的缓存区

  类似于一个整数数组,但是是对应于v8堆内存之外的的一个原始内存

  

  buffer和string之间转换(读取缓冲区数据)通过toString方式,默认编码为utf-8

5、Stream流

  node的抽象接口

  四种类型: 

  • Readable:用来读取数据,比如 fs.createReadStream()

  • Writable:用来写数据,比如 fs.createWriteStream()

  • Duplex:可读+可写,比如 net.Socket()

  • Transform:在读写的过程中,可以对数据进行修改,比如 zlib.createDeflate()(数据压缩/解压)。

  stream为eventEmitter的实现;有以下几个事件

  • data - 当有数据可读时触发。

  • end - 没有更多的数据可读时触发。

  • error - 在接收和写入过程中发生错误时触发。

  • finish - 所有数据已被写入到底层系统时触发。

 6、node模块系统:

  require,查找的顺序为:文件模块缓存区--》原生模块--》文件

7、文件系统:

  var fs = require("fs");

  读写文件、打开关闭删除文件等等操作

8、node工具模块:

  OS模块:系统相关操作模块

     系统内存、操作系统名、返回主机名等。。。

  path模块:处理文件路径模块

    格式化路径、连接路径、转换绝对路径、读取文件后缀名等。。。

  Net模块:用于底层的网络通信小工具

    创建tcp或本地服务器等。。

  dns模块:用于解析域名

  

  domain模块:简化异步代码异常处理,捕捉try catch无法捕捉的错误

9、web模块:

10、express框架:

    利用中间件来响应http请求

    定义路由响应不同http请求

    向模板传递动态参数渲染页面,如ejs模板

  常用的模块:

    body-parser:用于处理json等编码数据

    cookie-parser:用于处理cookie,可通过req.cookies获取传递给服务器的cookie对象

    multer:用于处理enctype='multipart/form-data'(设置表单MIME编码)的表单数据 

app.user(express.static("public")):设置静态文件

原文地址:https://www.cnblogs.com/laojun/p/7716760.html