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 ...
随机推荐
- 妙用 `package.json` 快速 `import` 文件(夹)
前言 import router from './router'; import router from '../../router'; import router from './../../../ ...
- cocos2dx 中文路径编译错误记录
'/Q' 不是内部或外部命令,也不是可运行的程序1> 或批处理文件.1> 'y' 不是内部或外部命令,也不是可运行的程序1> 或批处理文件.1>C:\Program Files ...
- WeMall微信商城源码插件会员卡代码详情
WeMall微信商城源码插件会员卡代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考 Index_index.html <html> <head> ...
- HAproxy健康检查的三种方式
1.通过监听端口进行健康检测 .这种检测方式,haproxy只会去检查后端server的端口,并不能保证服务的真正可用. 配置示例: listen http_proxy mode http cooki ...
- SVNManager配置
1.svn与apache的安装 yum install -y subversion httpd httpd.conf添加如下内容: LoadModule dav_svn_module module ...
- python IP地址转16进制
python IP地址转16进制 第一种方法: 通过socket.inet_aton实现 import socket from binascii import hexlify ary='192.168 ...
- Git-最简单的本地项目变成版本仓库,然后把内容推送到GitHub仓库
(注:本文的前提是本地Git仓库和github仓库之间已经存在SSH key了,所以如果没有建立联系的小伙伴们请先建立联系) 具体操作: 一:把本地项目变成版本仓库 1.把本地的一个项目目录编程版本库 ...
- 在windows上缓存git 密码
缓存git密码 一搜索 大部分都是在linux上的 . git config --global credential.helper cache 但在windows上pull或者push会报如下错误: ...
- js 判断是否为空对象、空数组
当需要判断参数是否为空时,总希望 js 能够提供原生的判断方法,可惜并没有,只能自己封装了. function isEmpty(obj) { // 检验 undefined 和 null if(!ob ...
- Android之XListView下拉刷新,更新网络美女图
一.简介: 下拉刷新是一种特定的手动刷新交互,和其他的同类操作不同的地方在于它采用了更加直觉的下拉操作,所以它的交互足够清晰明显. 下拉刷新主要用在类似ListView这样的控件,设计下拉刷新有三 ...