Nodejs核心模块
(1)全局对象
在浏览器JS中,通常window是全局对象,而nodejs中的全局对象是global,所有全局变量都是global对象的属性。
在nodejs中能够直接访问到的对象通常都是global的属性,如console、 process等
全局对象与全局变量
global最根本的作用是作为全局变量的宿主。
全局变量的条件:
在最外层定义的变量;全局对象的属性;隐式定义的变量(未定义直接赋值的变量)
定义一个全局变量,同时也是全局对象的属性。
永远使用var定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。
process
process是一个全局变量,即global对象的属性。它用于描述nodejs进程状态的对象,提供一个与操作系统的简单接口。
process.argv是命令行参数数组,第一个元素是node, 第二个是脚本文件名,从第三个开始每个元素是一个运行参数。
console.log(process.argv);
process.stdout是标准输出流。
process.stdin是标准输入流。
process.nextTick(callback)的功能是为事件循环设置一项任务,会在下次事件循环调响应时调用callback
还有process.platform, process.pid, process.execPath, process.memoryUsage()等。posix进程信号响应机制。
console
用于提供控制台标准输出。
console.log()
console.error()
console.trace()
(2)常用工具util
提供常用函数的集合,用于弥补核心js的功能过于精简的不足。
util.inherits
实现对象间原型继承的函数。js面向对象特性是基于原型的。
util.inspect
将任意对象转换为字符串的方法。
util.isArray(), util.isRegExp(), util.isDate(), util.isError(), util.format(), util.debug()等
(3)事件机制events
最重要的模块,因为nodejs本身架构就是事件式的,提供了唯一的接口,堪称nodejs事件编程的基石。
事件发射器
events模块只提供一个对象events.EventEmitter.它核心就是事件发射与事件监控器功能的封装。
EventEmitter.on(event,listener)
EventEmitter.emit(event, [arg1], [arg2], ..)
EventEmitter.once(event, listener)
EventEmitter.removeListener(event,listener)
EventEmitter.removeAllListeners([event])
error事件
遇到异常的时候,通常会发射error事件。
继承EventEmitter
不会直接使用EventEmitter, 而是在对象中继承它。包括fs, net, http在内,只要是支持事件响应的核心模块都是EventEmitter的子类。
(4)文件系统访问fs
文件操作的封装,提供了文件的读取、写入、更名、删除、遍历目录、链接等posix文件系统操作。有异步和同步两个版本。
fs.readFile
fs.readFileSync
fs.open
fs.read
(5)HTTP服务器与客户端
http.Server
request
connection
close
http.ServerRequest
data
end
close
获取GET请求内容
获取POST请求内容
httpServerResponse
response.writeHead(stausCode, [headers]);
response.write()
response.end()
HTTP客户端
http.request和http.get, 功能是作为客户端向HTTP服务器发起请求。
http.request(options, callback)
host
port
method
path
headers
callback传递一个参数,为http.ClientResponse的实例。
http.request返回一个http.ClientRequest的实例。
Nodejs核心模块的更多相关文章
- nodejs核心模块之http
http模块包含以下5个核心类和方法及属性: 核心类 1,http.Agent 2,http.ClientRequest 3,http.Server 4,http.ServerResponse 5,h ...
- nodejs 核心模块crypto
crypto用于加密解密 'use strict' var crypto=require('crypto'); var data={age:18} var key='dt';//定义一个钥匙 var ...
- Nodejs进阶:核心模块net入门与实例讲解
模块概览 net模块是同样是nodejs的核心模块.在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服务端的通信均依赖于socket(net. ...
- Nodejs进阶:核心模块Buffer常用API使用总结
本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 模块概览 Buffer是node的核心模块,开发者可以利用它来处 ...
- Nodejs之express第三方核心模块的中间件——body-parser
Node中的核心模块分两类:一类是自带的核心模块,如http.tcp等,第二类是第三方核心模块,express就是与http对应的第三方核心模块,用于处理http请求.express在3.0版本中自带 ...
- 使用NodeJS模块-NodeJS官方提供的核心模块
除了使用自己写的本地模块以外,NodeJS可以使用另外两种类型的模块,分别是NodeJS官方提供的核心模块和第三方提供的模块 NodeJS官方提供的核心模块 NodeJS平台自带的一套基本的功能模块, ...
- nodejs net模块
net模块是同样是nodejs的核心模块.在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服务端的通信均依赖于socket(net.Socke ...
- Nodejs的模块实现
在Node中引入模块,需要经历如下3个步骤:(1)路径分析(2)文件定位(3)编译执行 Node中模块分为两类: 一是Node提供的模块——核心模块.这部分在Node源代码的编译过程中,编译进了二进制 ...
- nodejs的模块系统(实例分析exprots和module.exprots)
前言:工欲善其事,必先利其器.模块系统是nodejs组织管理代码的利器也是调用第三方代码的途径,本文将详细讲解nodejs的模块系统.在文章最后实例分析一下exprots和module.exprots ...
随机推荐
- AR入门系列-03-在unity中将调试好的Vuforia项目导出为APK
先设置build settings 选中Android后点击Player Settings Product Name设置安装后的Android程序的名字 Bundle Identifier 设置apk ...
- 3301: [USACO2011 Feb] Cow Line
3301: [USACO2011 Feb] Cow Line Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 82 Solved: 49[Submit ...
- java解析上传的excel
file是一个File,是一个excel文件 得到文件流:InputStream in = file.getInputStream() 需要引入的类 import jxl.Cell;import j ...
- 如果服务器不能把编码格式改成UTF8怎么办?(20161113)
//数组内容的编码格式:utf8 /* 如果服务器不能把编码格式改成UTF8 则在方法里的执行sql语句之前输入下面三段代码就可以使得返回的数组的编码格式为UTF8 $conn->query(' ...
- 机器学习基石 2 Learning to Answer Yes/No
机器学习基石 2 Learning to Answer Yes/No Perceptron Hypothesis Set 对于一个线性可分的二分类问题,我们可以采用感知器 (Perceptron)这种 ...
- php学习测试题目
<?php header("content-type:text/html;charset=utf-8"); /* 1.银行给客户每天万分之四的利率,本金10 ...
- 完全关闭IIS日志,包括System32下的LogFile
早上突然发现网站访问不了了,登陆服务器一看,是C盘满了. 查一看,是IIS产生了70多G的日志,但明明已关闭日志了,还是会产生. 产生的目录在:C:\Windows\System32\LogFiles ...
- Android 5.0(棒棒糖))十大新特性
Android 5.0(棒棒糖))十大新特性 1. 全新Material Design设计风格 Android Lollipop全新的设计语言是受到了多种因素影响,是一种大胆的平面化创新.换句话说,谷 ...
- Dapper源码学习和源码修改
之前ORM比较火热,自己也搞了个WangSql,但是感觉比较low,大家都说Dapper性能好,所以现在学习学习Dapper,下面简单从宏观层面讲讲我学习的Dapper. 再了解一个东西前,先得学会使 ...
- Unity 3D Framework Designing(4)——设计可复用的SubView和SubViewModel(Part 1)
『可复用』这个词相信大家都熟悉,通过『可复用』的组件,可以大大提高软件开发效率. 值得注意的事,当我们设计一个可复用的面向对象组件时,需要保证其独立性,也就是我们熟知的『高内聚,低耦合』原则. 组件化 ...