Node.js API 初解读(一)

时间:2022-09-22 19:43:45

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 初解读(一)的更多相关文章

  1. Node&period;js API 初解读(三)

    目录 Node.JS API 初解读三 Node.JS API 初解读三 Version: NodeJs v6.2.0 一. DNS (Domain Name Server) [域名服务器] 1.简介 ...

  2. Node&period;js API 初解读(二)

    四. Cluster 1.简介 在介绍 Cluster 之前.我们需要知道 node的 一些基本特性,比如说 都知道的 nodejs最大的特点就是单进程.无阻塞运行,并且是异步事件驱动的. 那么随之而 ...

  3. node&period;js&lpar;API解读&rpar; - process &lpar;http&colon;&sol;&sol;snoopyxdy&period;blog&period;163&period;com&sol;blog&sol;static&sol;60117440201192841649337&sol;&rpar;

    node.js(API解读) - process 2011-10-28 17:05:34|  分类: node |  标签:nodejs  nodejsprocess  node.jsprocess  ...

  4. Node&period;js API

    Node.js v4.4.7 Documentation(官方文档) Buffer Prior to the introduction of TypedArray in ECMAScript 2015 ...

  5. Node&period;js API快速入门

    Node.js API 快速入门 一.事件EventEmitter const EventEmitter = require('events'); class MyEmitter extends Ev ...

  6. node&period;js api文档生成

    ApiDoc官网地址为:http://apidocjs.com/在Java中有Swagger及其升级版的Swagger2+Springfox自动生成接口管理文档.而在Node.js中则可以利用ApiD ...

  7. node&period;js &plus; express 初体验【hello world】

    [node.js]  一个神奇的XX 呵呵 :) 不知道怎么形容他才好! [express] 是node.js 开发web应用程序的框架 开发环境:XP 大家共同进步吧 :) 一:前期准备: 1:下载 ...

  8. Node&period;js入门初体验

    今天有一个类似网络爬虫的需求,本来打算用我还算熟悉的asp或者asp.NET来做这个事情,但是写了这么长时间js,asp的语法实在不喜欢,VS又早被我卸掉了,思来想去打算用一下最近比较火的Node.j ...

  9. Node&period;js 安装 初体验&lpar;1&rpar;

    1.安装nodejs http://nodejs.org/download/  自动根据系统下载自己的版本node.js 2.环境变量 windows 安装,不需要配置环境变量   mac安装后,会提 ...

随机推荐

  1. py

    import httplib,urllib import re import random def Login(userid,password): params=urllib.urlencode({' ...

  2. &lbrack;原创&rsqb;android使用代码生成LayerDrawable的方法和注意事项

    为了有更好的UI体验,一般我们会把button.textview等控件的背景设置上阴影.传统的做法是美工提供一张具有阴影效果的nine patch图,然后将其在xml文件中添加到background属 ...

  3. mysql之消息队列

    消息队列:在消息的传输过程中保存消息的容器. 消息队列管理器在将消息从它的源中继到它的目标时充当中间人.队列的主要目的是提供路由并保证消息的传递:如果发送消息时接收者不可用,消息队列会保留消息,直到可 ...

  4. centos 安装 pip

    下载文件 wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 执行安装 python get-pip.py

  5. HDU 2196 Computer &lpar;树dp&rpar;

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2196 给你n个点,n-1条边,然后给你每条边的权值.输出每个点能对应其他点的最远距离是多少 ...

  6. Hadoop学习笔记&lpar;5&rpar; ——编写HelloWorld&lpar;2&rpar;

    Hadoop学习笔记(5) ——编写HelloWorld(2) 前面我们写了一个Hadoop程序,并让它跑起来了.但想想不对啊,Hadoop不是有两块功能么,DFS和MapReduce.没错,上一节我 ...

  7. 在top命令下kill和renice进程

    For common process management tasks, top is so great because it gives an overview of the most active ...

  8. unity——使用角色控制器组件&plus;射线移动

    首先要导入unity标准资源包Character Controllers 这个标准资源包,为了方便,还添加了两外一个资源包Scripts,后者包含了一些基本的脚本个摄像机脚本. 没错,这次我们要使用其 ...

  9. 关于laravel 得手动分页问题

    一般得分页,我们只需要使用paginate方法,就可以简单得搞定.但是遇到数组得组合情况呢?这个时候,就需要我们使用自定义分页了.首先我们看下laravel得分页方法源码: #vendor/larav ...

  10. Linux与Windows中的UTC时间

    Linux与Windows中的UTC时间 先介绍几个术语 UTC 协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temp ...