Node核心API(学习笔记)

node核心API

Events

  1. DOM是基于用户交互的用户驱动事件模型,有与树状结构(HTML)对应的接口元素,操作对象有父节点也有可能有子节点,因此这种模型具有冒泡和捕获的概念,允许沿着树结构向上或者向下的元素也接受触发事件,由于JavaScript中没有这种树状结构,这就是Node中事件模型与浏览器中的事件模型之间的区别
  2. EventEmitter
    • 提供了on和emit两种方法可以供其他类使用
    • on为一个事件创建了监听器,监听相关的事件
    • emit产生相关的事件触发事件监听器,这种事件只针对某个实例,不存在全局的事件,同一实例的不同对象之间也不会共享事件
  3. 回调函数语法
    • 如果传给emit()的参数数目小于3个(包含事件名称),那么调用的速度更快
    • 如果想要在事件回调函数中使用this变量的话,就必须将它作为一个参数传入并赋值到另外一个变量中

HTTP

构建新的HTTPServer类使用http.createServer()

  1. http服务器:使用HTTP服务器的第一步是调用http.createServer()创建一个Server类的实例,这个类中有6个事件和三个方法
    • connection和close事件表示了与客户端的TCP连接的建立与关闭
    • request、checkContinue、upgrade、clientError事件与HTTP请求相关联。request表示新的HTTP请求。checkContinue在客户端以数据流的方式将数据发送给服务器的时候可以对HTTP请求进行直接的控制,用来检查当前状态能否继续发送。clientError用来传递客户端的error事件
  2. http客户端:用来对远程服务器发起连接
    • 配置(options)提供host(可以是IP地址)port和path,方法默认是GET
    • 调用http.request(options, function)创建客户端请求实例,其中回调函数中可以监听response事件,可以使用监听器订阅response的某一事件
    • 最后需要使用req.end()来结束该请求
    • 使用http.get()得到的是Buffer对象的裸数据,可以在回调函数中使用request.setEncoding(‘utf8’)来讲获得的数据转换为utf8格式的数据
    • 发送数据:在options中将method设置为’POST’,在回调函数中使用response.setEncoding(‘utf8’)进行设置,在外部使用req.write()发送字符串格式的数据,使用req.end()结束数据发送。服务器在收到req.end()之前不会响应数据请求
  3. URL:有三个方法:parse、format和resolve
    • 使用require(‘url’)将URL模块包含进来
    • 使用parse方法对URL进行解析得到:
      • href:完整的url
      • protocol:URL协议
      • host是完整的hostname
      • pathname是文件路径
      • search部分为URL中的http GET参数
  4. querystring:处理query字符串的辅助模块
    • 使用require(‘querystring’)将模块包含进来
    • 使用parse方法将query字符串转变为一个对象,其中有关键字和变量值其中数字是返回成字符串的
    • 传给parse方法的query字符串中不能包含URL中标记的?
    • 使用encode方法将输入的key-value格式的对象转换成为query字符串的格式但是如果属性的值不是字符串、布尔值、数字中的一种,那么无法进行序列化

I/O

  1. 数据流
    • 所有的数据流都是EventEmitter的实例,可以主动触发事件
    • 可读的数据流
      • 触发data事件
      • 使用数据池模式来处理数据流,在接收到end事件之后对整体数据进行处理
    • 可写的数据流
    • 可读写的数据流
  2. 文件系统
    • 通常使用异步的方法,但是如果在删除(unlink)之后读取文件,会出现错误。将删除文件内嵌在异步函数之中来保证次序
    • var fs = require('fs');
    • fs.readFile(filename, function(error, data){fs.unlink(filename);})
  3. buffer
    • new Buffer(‘string’, ‘encoding method’)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值