@JunQiu
2018-09-18T18:10:18.000000Z
字数 2505
阅读 1099
node_常用module
summary_2018/06
language_node
1、日常工作
- 确定近期学习的书籍、需要掌握的内容
- 书籍:mogondb索引、数据模型等、ACM算法
- 学习内容:node、一些数据挖掘算法、python、coursera课程学习
- node 常用模块学习
2、技术学习
- node 常用模块
- HTTP module
- 引入:require('http')、实现HTTP服务端和客户端、nodeHttpApi接近底层,只涉及流处理与消息解析,不具体解析消息头或消息主体
- http.Agent (负责为HTTP客户端管理连接的持续与复用,http.globalAgent作为所有客户端请求的默认Agent)
- 示例:
const http = require('http');
//生成Agent
const keepAliveAgent = new http.Agent({ keepAlive: true });
//配置请求的Agent(若要配置一次性代理:{agent: false})
options.agent = keepAliveAgent;
//http.get() 或 http.request()
http.request(options, onResponseCallback);
- 重要属性和方法:maxSockets、destroy()
- http.ClientRequest(在 http.request() /.get内部被创建并返回。 它表示着一个正在处理的请求,其请求头已进入队列。)
- 示例:
const req = http.request(options)
- 重要的事件和方法:abort、connect、response;request.abort()
- http.Server (继承于net.Server,用于创建一个服务端)
- 示例:
const server = http.createServer((req, res) => {
res.setHeader('Content-Type', 'text/html');
res.setHeader('X-Foo', 'bar');
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('ok');
});
- http.ServerResponse (对象在 HTTP 服务器内部被创建。 它在server中作为第二个参数被传入 'request' 事件。)
- http.IncomingMessage (IncomingMessage 对象由 http.Server 或 http.ClientRequest 创建,并作为第一个参数分别递给 'request' 和 'response' 事件。)
- 属性: headers、method、rawHeaders
- http.get(因为大多数请求都是 GET 请求且不带请求主体,所以 Node.js 提供了该便捷方法。 该方法与 http.request() 唯一的区别是它设置请求方法为
GET 且自动调用 req.end()。 注意,回调函数务必消耗掉响应数据)
- process module
- 引入:process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程。 因为是全局变量,所以无需使用 require()。
- process 对象是 EventEmitter 的实例。
- 事件:beforeExit、exit等
- 方法:exit()等
- path module
- 引入:require('path'),path模块提供了一些工具函数,用于处理文件与目录的路径
- path 模块的默认操作会根据Node.js应用程序运行的操作系统的不同而变化。 比如,当运行在 Windows 操作系统上时,path 模块会认为使用的是 Windows 风格的路径。(固定:path.win32/path.posix)
- basename、delimiter、dirname、extname、formart(parse)
- File System module
- 引入 : require('fs') , fs 模块提供了一些 API,用于以一种类似标准 POSIX 函数的方式与文件系统进行交互。
- tips : 所有文件系统 API 中,除了 fs.FSWatcher() 和那些显式同步的方法之外,都使用了 libuv 的线程池
- fs.FSWatcher 类(fs.watch() 方法会返回一个新的 fs.FSWatcher 对象)
- fs.ReadStream 类(fs.createReadStream() 会返回一个新的 fs.ReadStream 对象)
- fs.Stats 类(fs.stat()、fs.lstat() 和 fs.fstat() 及其同步版本返回的对象都是该类型)
- fs.WriteStream 类(fs.createWriteStream() 一个可写流)
- 其它的一些函数,注意回调、promise、sync
- Query String module
- 引入:require('querystring'),querystring 模块提供了一些实用函数,用于解析与格式化 URL 查询字符串。
- escape、unescape、parse、stringify
- assert module
- 引入:require('assert'),assert模块提供了断言测试的函数,用于测试不变式。
- Tips:strict 与 legacy(废弃) 两种模式,建议只使用 strict模式
- 常用函数:
- assert(value[, message])
- assert.deepStrictEqual(actual, expected[, message])
- assert.notStrictEqual(actual, expected[, message])
- assert.doesNotReject(block[, error][, message])(相当于 assert.doesNotThrow(),除了需要等待完成的异步特性。
- assert.doesNotThrow(block[, error][, message])
- assert.fail([message])
3、思考总结
- 文档的阅读需要整体到局部,需要把握一个整体再细读
- 培养较好的时间观念