###Node.js核心模块

1. 全局对象

Node.js中能够访问到的都是global的属性

**process它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口。**

* process.argv 是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。
* process.stdout 标准输出流 **console.log的定义。**
console.log = function (d) {
process.stdout.write(d + '\n');
};

通常我们使用的console.log()向标准输出打印字符,而process.stdout.write()函数提供了更底层的接口

* process.stdin 是标准输入流,初始时它是被暂停的,要想从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。
* process.nextTick(callback) 异步执行callback函数 为事件循环设置一项任务,Node.js 会在下次事件循环调响应时调用callback。
* process.chdir 改变进程的工作目录
* process.cwd 返回当前进程的工作目录
* process.env 返回当前linux系统的信息
* process.exit(code=0) kill当前进程,退出本进程
* process.getgid()、process.setgid(id) 获取和设置进程的groupid
* process.getuid()、process.setuid(id) 获取和设置进程的userid
* process.version、process.versions node.js的版本和node.js的版本对象
* process.pid、process.title、process.arch、process.platform 进程id,进程名字,进程架构(如:X64),进程平台(如:linux)
* process.memoryUsage() 进程的内存使用情况

[processAPI](http://nodejs.org/api/process.html)

**console用于提供控制台标准输出**

* console.log() 可接受若干个参数 如果只有一个参数,则输出这个参数的字符串形式
* console.error() console.log()用法相同,只是向标准错误流输出。
* console.trace():向标准错误流输出当前的调用栈

2. 常用工具 util

util是一个 Node.js 核心模块,提供常用函数的集合,用于弥补核心 JavaScript 的功能过于精简的不足。

* util.inherits(constructor, superConstructor) 用于对象间的**原型继承**(不继承方法等)

* util.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换为字符串的方法,通常用于调试和错误输出。它至少接受一个参数object,即要转换的对象

* util.isArray()、util.isRegExp()、util.isDate()、util.isError()四个类型测试工具

* util.format()、util. debug()

[utilAPI](http://nodejs.org/api/util.html)

3. 事件驱动 events

events是 Node.js 最重要的模块,events模块不仅用于用户代码与 Node.js 下层事件循环的交互,还几乎被所有的模块依赖。

* events.EventEmitter 事件发射器 EventEmitter的核心就是事件发射与事件监听器功能的封装

1. 需要实例化

var event = require('events');

var emmits = new event.EventEmitter();

2. emitter.on('someEvent',fn) //为指定事件注册一个监听器

3. emitter.emit('someEvent', 'hebo', 1989); //发射事件 可以传递若干参数
4. EventEmitter.once(event, listener)为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发后立刻解除该监听器
5. EventEmitter.removeListener(event, listener)移除指定事件的某个监听器,listener必须是该事件已经注册过的监听器。
6. EventEmitter.removeAllListeners([event])移除所有事件的所有监听器,如果指定event,则移除指定事件的所有监听器
* error 事件

当EventEmitter 发射error事件的时候,通常说明我们的程序有错误,如果没有监听器,则会退出程序并打印错误到console

我们一般要为会发射error事件的对象设置监听器,避免遇到错误后整个程序崩溃

**大多数时候我们不会直接使用EventEmitter,而是在对象中继承它。包括 fs、net、http在内的,只要是支持事件响应的核心模块都是EventEmitter的子类**
> 为什么要这样做呢?原因有两点。首先,具有某个实体功能的对象实现事件符合语义,事件的监听和发射应该是一个对象的方法。其次 JavaScript 的对象机制是基于原型的,支持部分多重继承,继承EventEmitter不会打乱对象原有的继承关系。

[eventsAPI](http://nodejs.org/api/events.html)

Node.js笔记3的更多相关文章

  1. Node.js笔记1

    Node.js入门笔记 1. node -help 可以显示帮助信息2. node REPL 模式(Read-eval-print loop) 输入—求值—输出循环 直接在cmd输入node 可以进入 ...

  2. node.js 笔记

    教程总结笔记: 学习网站:http://www.runoob.com/nodejs/nodejs-install-setup.html Node.js 中文网及安装文件下载: http://nodej ...

  3. Node.js 笔记02

    一.关于命令 常用命令: dir 列出当前目录下面所有的文件 cd 目录名 进入到指定的目录,. 当前目录, .. 进入上级目录,cd . 当前目录, cd .. 上级目录 md 目录名 创建文件夹 ...

  4. node.js 笔记(一)

    参考:https://github.com/alsotang/node-lessons 感谢!!! 本文属于小白入门级笔记,请大牛自动屏蔽!!! 1.     开发环境 os: 10.12.6 nod ...

  5. 学习Node.js笔记(一)

    一.什么是Node.js 1.1.Node.js是什么 Node.js是用来编写高性能网络服务器的JavaScript工具包 Node.js 是一个基于Chrome JavaScript 运行时建立的 ...

  6. node.js笔记

    在node环境上面运行js代码,js相当于php,node相当于apache环境 第一步装 node 环境1.从官网下载 dmg 文件安装2.通过命令行安装 需要用到 homebrew(mac上专门用 ...

  7. Node.js笔记4

    4. 文件系统 fs fs模块是文件操作的封装,提供了同步跟异步操作2个版本 * fs.readFile(filename,[encoding],[callback(err,data)]) 是最简单的 ...

  8. Node.js笔记2

    入门二 5. 事件 Node.js中所有的异步I/O操作完成时都会发送一个事件到事件队列. Events 事件模块 `events.EventEmitter` 简单用法: var EventEmitt ...

  9. node.js 笔记一

    现在地址:http://nodejs.org/download/ 我的机器是windows的,选择的文件是,是编译后的版本:Windows Installer (.msi)  32-bit examp ...

随机推荐

  1. Servlet学习第一天--Servlet开发映射URL配置

    基础不扎实,从头学,认真记录笔记. 感谢@孤傲苍狼:http://www.cnblogs.com/xdp-gacl/p/3760336.html -为什么要配置? 由于客户端是通过URL访问web服务 ...

  2. Cocos2d-x 学习之路------(CCCallfunc 系列)

    CCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO类都是调用函数来执行动作,他们的使用只是局限于他们调用的的函数的参数不同而不同 CCCallFunc的回调 ...

  3. windbg 调试技巧

    技巧一:在加载名卸载的时候下断点 1. 加载某个DLL 的时候下断点的WinDBG 命令: sxe ld:[dll name] 然后按F5,进行刷新,再使用lmf 查看装载的Dll名称. 2.  卸载 ...

  4. Sql Server数据库快照初探

    什么是快照 数据库快照是 SQL Server 数据库(源数据库)的只读静态视图.换句话说,快照可以理解为一个只读的数据库.利用快照,可以提供如下好处: 提供了一个静态的视图来为报表提供服务 可以利用 ...

  5. 如何在 静态编译的QT 5.5.1 中 使用数据库插件连接 ODBC(调用静态插件)

    前段时间由于工作的关系,需要编写一个将数据插入到 Sql server 2012 的桌面软件. 由于之前使用的是MFC,偶然间接触到了Qt后,被它的简洁惊艳到了,于是便毅然而然的转投到了Qt的怀抱,哈 ...

  6. C++ string实现原理

    C++程序员编码过程中经常会使用string(wstring)类,你是否思考过它的内部实现细节.比如这个类的迭代器是如何实现的?对象占多少字节的内存空间?内部有没有虚函数?内存是如何分配的?构造和析构 ...

  7. java文件读写操作

    Java IO系统里读写文件使用Reader和Writer两个抽象类,Reader中read()和close()方法都是抽象方法.Writer中 write(),flush()和close()方法为抽 ...

  8. C语言入门(3)——对Hello World程序的解释

    上篇我们写了一个最简单的程序.这个简单的程序包含了很多重要的内容.本篇我们通过这个最简单的Hello World程序逐一讲解C语言程序的一些特点. 打开Visual Studio 2013 通过菜单- ...

  9. 使用border-image实现类似iOS7的1px底边

    使用border-image实现类似iOS7的1px底边 iOS7已经发布有一段时间,扁平化设计风格有很多值得称赞的地方,其中有很多设计细节都是值得研究的. 首先,来看下面iOS设置的截图中的bord ...

  10. Problem 2128 最长子串(kmp+strstr好题经典)

     Problem 2128 最长子串 Accept: 134    Submit: 523Time Limit: 3000 mSec    Memory Limit : 65536 KB  Probl ...