Node.js API 初解读(一)
2016-12-13 10:19
344 查看
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解读之file system模块
- Node.js API 初解读(二)
- node.js(API解读) - file system模块
- 详解Node.js API系列C/C++ Addons(3) 程序实例
- 详解Node.js API系列 Module模块(2) 案例分析
- node.js-v0.8API解读(1)-domain
- node.js入门 - 11.api:DNS和加密
- 详解Node.js API系列C/C++ Addons(3) 程序实例
- 详解Node.js API系列C/C++ Addons(4) Javascript也能搞嵌入式?
- node.js在线API: http://www.ostools.net/apidocs/...
- 概述 - Node.js API 文档
- nodeJS 中文API node.js 中文文档
- 详解Node.js API系列 Crypto加密模块(2) Hmac
- 关于本文档 - Node.js API 文档
- 详解Node.js API系列 Http模块(1) 构造一个简单的静态页服务器
- node.js入门 - 9.api:http
- node.js入门 - 8.api:events
- node.js入门 - 12.api:进程(process)
- 关于本文档 - Node.js API 文档