- 4
- 0
- 约2.8千字
- 约 5页
- 2017-02-08 发布于重庆
- 举报
Nodejs学习笔记
异步式IO(非阻塞 I/O)与事件驱动
当线程遇到 I/O 操作时,不会以阻塞的方式等待 I/O 操作 的完成或数据的 返回,而只是将 I/O 请求发送给操作系统,继续执行下一条语句。当操作 系 统完成 I/O 操作时,以事件的形式通知执行 I/O 操作的线程,线程会在特 定时候处理这个 事件。为了处理异步 I/O,线程必须有事件循环,不断地检 查有没有未处理的事件,依次予 以处理。
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。在开 事件由 EventEmitter 对象提供。前面提到的 fs.readFile 和 http.createServer 的回 调函数都是通过 EventEmitter 来实现的。下面我们用 一个简单的例子说明 EventEmitter 的用法:
//event.js
var EventEmitter = require(events).EventEmitter;
var event = new EventEmitter();
event.on(some_event, function() {
console.log(some_event occured.);
});
setTimeout(function() {
event.emit(some_event);
}, 1000);
运行这段代码,1秒后控制台输出了 some_event occured.。其原理是 event 对 象 注册了事件 some_event 的一个监听器,然后我们通过 setTimeout 在 1000毫秒以后向 event 对象发送事件 some_event,此时会调用 some_event 的监听器。
Node.js与Windows的兼容性仍然不如 POSIX 操作系统,这一点在 npm 提供的第三方模块中体现得尤为突出。这主要是因为许多第三方的模块需 要编译原生的 C/C++ 代码,其中编译框架和系统调用很多都是以 Linux 为 范本的,与 Windows 不兼容。
使用 node 的 REPL 模式
REPL (Read-eval-print loop),即输入—求值—输出循环。
运行无参数的 node 将会启动一个 JavaScript 的交互式 shell
Node.js 将“HTTP服务器”这一层抽离,直接面向浏览器用户
global--全局对象与全局变量
全局变量--process、console
常用工具--util
Util.inherits()继承
Util.inspect()以字符串的形式输出
Events事件 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就 是事件发射与事件监听器功能的封装。EventEmitter 的每个事件由一个事件 名和若干个参 数组成,事件名是一个字符串,通常表达一定的语义。对于 每个事件,EventEmitter 支持 若干个事件监听器。当事件发射时,注册到这 个事件的事件监听器被依次调用,事件参数作 为回调函数参数传递。
注册事件--EventEmitterInstance.on(事件名,回调函数);
发射事件--EventEmitterInstance.emit(事件名,返回参数);
常用的事件方法如下:
8.1 EventEmitter.on(event, listener) 为指定事件注册一个监听器,接受一个字 符串 event 和一个回调函数 listener
8.2 EventEmitter.emit(event, [arg1], [arg2], [...]) 发射 event 事件,传递若干 可选参数到事件监听器的参数表
8.3 EventEmitter.once(event, listener) 为指定事件注册一个单次监听器,即 监 听器最多只会触发一次,触发后立刻解除该监听器
8.4 EventEmitter.removeListener(event, listener) 移除指定事件的某个监听 器,listener 必须是该事件已经注册过的监听器
8.5 EventEmitter.removeAllListeners([event]) 移除所有事件的所有监听器, 如果指定 event,则移除指定事件的所有监听器
events里面的error事件
文件系统--fs
10.1 fs.readFile(filename,[encoding],[callback(err,data)])是最简单的读取 文件 的函数。它接受一个必选参数 filename,表示要读取的文件名。第二个参数
您可能关注的文档
- Java通过JsApi方式实现微信支付.doc
- Java题.doc
- JBT10205液压缸技术条件.doc
- JBT7041-2006液压齿轮泵.doc
- JD191280A-规格书(尖脚).doc
- jlinkV8指示灯不亮usb无法识别的问题.doc
- JJF1471《全球导航卫星系统(GNSS)信号模拟器校准规范》解读.doc
- jquery常用小功能总结.doc
- js笔记.doc
- K-means聚类算法.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)