Node.js API 初解读(一)
Node.JS API 初解读
Version: NodeJs v6.2.0
一、 Assert
1、简介
Assert模块主要用于断言。如果表达式不符合预期,就抛出一个错误。
该模块用于编写程序的单元测试用例,通过require(‘assert’)调用。
2、函数
assert(value[, message])
assert.ok(value[, message])
3、例子
// assert.js
const assert = require('assert');
const add = function(a, b) {
return a + b;
};
const expected = add(1, 2);
assert(expected === 1, '预期1+2 = 3');
4、运行例子
node assert.js
-------------------------------
throw new assert.AssertionError({
^
AssertionError: 预期1+2 = 3
at Object.<anonymous> (D:\0\nodejs\assert.js:8:1)
at Module._compile (module.js:541:32)
...
-------------------------------
二、Buffer
1、简介
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
但在处理像TCP流或文件流时,必须使用到二进制数据。
因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
注意: 因为 Buffer 类 属于 node 的 全局构造函数。 全局那么自然就不要每次的require了,直接使用
像使用 JS 构造函数那样 实例化
1.1缓存区
这里我们详细的介绍下 缓存区的作用
buffer 有缓冲的功能,可以提高读写效率, 减少系统调用。
比如你写一个文件, 直接写 写一个字节访问一次硬盘 对硬盘来讲很伤的。
然后你用buffer之后, 是一次写入10000个字节 写入同样的内容, 你访问硬盘的次数少了
硬盘折寿就没那么严重, 而且访问硬盘的次数少的话, 调用系统api的次数也少了。 整个效率就提高了
2、函数
new Buffer(10);
3、例子
// buffer.js
const buf = new Buffer(10);
console.log(buf);
4、运行例子
node buffer.js
----------------------------
<Buffer 05 00 00 00 01 00 00 00 00 00>
三、 Addons
1、简介
Addons 是 属于nodejs 的一个 扩展插件。当node某些默认的 api 已经不能够满足你的开发需求的时候, 你就可以通过Addons 来开发出你想要的 扩展插件。
2、函数
在编写node 的插件的过程中需要 了解一些 nodeJs 提供的一些 主要类库(这里理解成开发插件常会用的 API )
这里我们着重介绍四个 类库 ( 2.1 - 2.4 )
>2.1
V8 JavaScript,C++类库,作为JavaScript的接口类,主要用于创建对象、调用方法等功能。大部分功能在头文件v8.h (在node文件夹下的路径为deps/v8/include/v8.h)
>2.2
libuv 基于C的事件循环库,当需要等待的文件描述符可读时,等待定时器,或者等到接受信号时,会调用libuv的接口,也可以说,任何I/O操作,都需要调用libuv库
>2.3
内部Node的库,可以通过node::ObjectWrap来调用Node.js内部的库。
>2.4
其他的一些类库同样可以在deps/ 中找到
// 我们希望能够开发一个简单的类库 如下使用方式
module.exports.hello = function() { return 'world'; };
3、例子
C/C++
#include <node.h>
#include <v8.h>
using namespace v8;
Handle<Value> Method(const Arguments& args) {
HandleScope scope;
return scope.Close(String::New("world"));
}
void init(Handle<Object> exports) {
exports->Set(String::NewSymbol("hello"),
FunctionTemplate::New(Method)->GetFunction());
}
NODE_MODULE(hello, init)
//请注意:所有的Node Addons 必须通过以下初始化代码导出
void Initialize (Handle<Object> exports);
NODE_MODULE(module_name, Initialize)
4、运行例子
var addon = require('./build/Release/hello');
console.log(addon.hello()); // 'world'
// 最终输出 world 就算你最简单的 Addons (hello world)类库编写完成啦~
Node.js API 初解读(一)的更多相关文章
- Node.js API 初解读(三)
目录 Node.JS API 初解读三 Node.JS API 初解读三 Version: NodeJs v6.2.0 一. DNS (Domain Name Server) [域名服务器] 1.简介 ...
- Node.js API 初解读(二)
四. Cluster 1.简介 在介绍 Cluster 之前.我们需要知道 node的 一些基本特性,比如说 都知道的 nodejs最大的特点就是单进程.无阻塞运行,并且是异步事件驱动的. 那么随之而 ...
- node.js(API解读) - process (http://snoopyxdy.blog.163.com/blog/static/60117440201192841649337/)
node.js(API解读) - process 2011-10-28 17:05:34| 分类: node | 标签:nodejs nodejsprocess node.jsprocess ...
- Node.js API
Node.js v4.4.7 Documentation(官方文档) Buffer Prior to the introduction of TypedArray in ECMAScript 2015 ...
- Node.js API快速入门
Node.js API 快速入门 一.事件EventEmitter const EventEmitter = require('events'); class MyEmitter extends Ev ...
- node.js api文档生成
ApiDoc官网地址为:http://apidocjs.com/在Java中有Swagger及其升级版的Swagger2+Springfox自动生成接口管理文档.而在Node.js中则可以利用ApiD ...
- node.js + express 初体验【hello world】
[node.js] 一个神奇的XX 呵呵 :) 不知道怎么形容他才好! [express] 是node.js 开发web应用程序的框架 开发环境:XP 大家共同进步吧 :) 一:前期准备: 1:下载 ...
- Node.js入门初体验
今天有一个类似网络爬虫的需求,本来打算用我还算熟悉的asp或者asp.NET来做这个事情,但是写了这么长时间js,asp的语法实在不喜欢,VS又早被我卸掉了,思来想去打算用一下最近比较火的Node.j ...
- Node.js 安装 初体验(1)
1.安装nodejs http://nodejs.org/download/ 自动根据系统下载自己的版本node.js 2.环境变量 windows 安装,不需要配置环境变量 mac安装后,会提 ...
随机推荐
- Arduino 1602液晶屏实验和程序
在Arduino IDE中, 项目->加载库->管理库中搜索LiquidCrystal,然后安装即可 1.接线图 2.引脚图 3.最简单程序 #include <LiquidCrys ...
- pptpvpn 连接后 无法上外网
VPN拨号后只能连内网,不能上外网的原因和解决方法 因为众所周知的原因,很多个人或者单位需要架设自己的VPN.会遇到一些奇怪的情况,比如说:为什么连上单位的VPN后就只好上公司的内网(局域网),外网( ...
- WPF 自定义IconButton
自定义一个按钮控件 按钮控件很简单,我们在项目中有时把样式封装起来,添加依赖属性,也是为了统一. 这里举例,单纯的图标控件怎么设置 1.UserControl界面样式 <UserControl ...
- What's new in Windows 10 Enterprise with Microsoft Edge.(Windows 10 新功能)
What's new in Windows 10 Enterprise with Microsoft Edge --带有Edge浏览器的Windows 10 企业版的新功能 本文摘录自公司群发邮件, ...
- 优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码)。
在您阅读本文前,先需要告诉你的是:即使是本文优化过的算法,DCT去噪的计算量依旧很大,请不要向这个算法提出实时运行的苛刻要求. 言归正传,在IPOL网站中有一篇基于DCT的图像去噪文章,具体的链接地址 ...
- 原生Ajax
使用原生Ajax 验证用户名是否被注册 创建出注册信息: <h1>注册信息</h1><input type="text" name="txt ...
- [No0000A1]人体排毒时间表,别再信了
经常可以看到有「人体排毒时间表」这样的说法,不同的媒体反复传播,大同小异.这些说法里,大多把人体的系统器官都给安排了一个特定的时段,认为在某时段是某器官的排毒时间,睡觉能排一切毒.事实上果真如此么?让 ...
- jQuery选择器和选取方法 http://www.cnblogs.com/MaxIE/p/4078869.html
我们已经使用了带有简单Css选择器的jQuery选取函数:$().现在是时候深入了解jQuery选择器语法,以及一些提取和扩充选中元素集的方法了. 一.jQuery选择器 在CSS3选择器标淮草案定义 ...
- mysql max_allowed_packet 设置过小导致记录写入失败
mysql根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置 show VARIABLES ...
- async & await 的前世今生
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...