前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJS学习三之API

NodeJS学习三之API

作者头像
空空云
发布2018-09-27 11:54:51
5710
发布2018-09-27 11:54:51
举报
文章被收录于专栏:大前端_Web大前端_Web

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://cloud.tencent.com/developer/article/1347569

Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务。这导致Node大量采用异步操作(asynchronous opertion),即任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行。由于这种特性,某一个任务的后续操作,往往采用回调函数(callback)的形式进行定义。so也不适用于try catch捕获错误,约定回调函数的第一个参数为为error对象。

  • Node约定,如果某个函数需要回调函数作为参数,则回调函数是最后一个参数。另外,回调函数本身的第一个参数,约定为上一步传入的错误对象。

Buffer

V8引擎将Buffer对象占用的内存,解释为一个整数数组,而不是二进制数组。所以,new Uint32Array(new Buffer(1, 2, 3, 4)),生成的Uint32Array数组是一个4个成员的Uint32Array数组,而不是只有单个成员(0x1020304或者0x4030201)。

注意,这时二进制数组所对应的内存是从Buffer对象拷贝的,而不是共享的。二进制数组的buffer属性,保留指向原Buffer对象的指针。

二进制数组的操作,与Buffer对象的操作基本上是兼容的,只有轻微的差异。比如,二进制数组的slice方法返回原内存的拷贝,而Buffer对象的slice方法创造原内存的一个视图(view)。即返回的新 buffer,是对原 buffer 某区段的引用,或者说新 buffer 是指针,它指向原 buffer 的某区段

Child Process

child_process模块用于新建子进程。子进程的运行结果储存在系统缓存之中(最大200KB),等到子进程运行结束以后,主进程再用回调函数读取子进程的运行结果。

代码语言:javascript
复制
child_process.exec(command, [options], callback)
child_process.spawn(command, [args], [options])

cluster

cluster模块允许设立一个主进程和若干个worker进程,由主进程监控和协调worker进程的运行。worker之间采用进程间通信交换消息,cluster模块内置一个负载均衡器,采用Round-robin算法协调各个worker进程之间的负载。运行时,所有新建立的链接都由主进程完成,然后主进程再把TCP连接分配给指定的worker进程

Events

Events模块的作用,还在于其他模块可以部署EventEmitter接口,从而也能够订阅和发布消息。

代码语言:javascript
复制
var  eventEmitter = require('events').EventEmitter;

function Dog(name) {
    this.name = name;
}

Dog.prototype = Object.create(eventEmitter.prototype);

var simon = new Dog('simon');

simon.on('bark', function() {
    console.log(this.name + ' barked');
});

setInterval(function() {
    simon.emit('bark');
},500);

上面代码新建了一个构造函数Dog,然后让其继承EventEmitter,因此Dog就拥有了EventEmitter的接口。最后,为Dog的实例指定bark事件的监听函数,再使用EventEmitter的emit方法,触发bark事件。

Node内置模块util的inherits方法,提供了另一种继承EventEmitter的写法。

事件类型

Events模块默认支持两个事件。

newListener事件:添加新的回调函数时触发。

removeListener事件:移除回调时触发。

参考

nodejs官网:https://nodejs.org/dist/latest-v4.x/docs/api/querystring.html

阮一峰Nojs.API中文版:http://javascript.ruanyifeng.com/nodejs/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年07月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Buffer
  • Child Process
  • cluster
  • Events
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档