Node.js 核心模块 笔记

全局对象

JavaScript 中有一个特殊的对象,成为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。
浏览器JavaScript 中,通常window 是全局对象,而Node.js 中的全局对象是global,所有全局变量(除了global 本身以外)都是global 对象的属性。
global 最根本的作用是作为全局变量的宿主。按照ECMAScript 的定义,满足以下条件的变量是全局变量:
在最外层定义的变量;全局对象的属性;隐式定义的变量(未定义直接赋值的变量)
注:Node.js 中不可以在最外层定义变量,因为所有用户代码都属于当前模块的,而模块本身不是最外层上下文。

process 是一个全局变量,即global 对象的属性。它用于描述当前Node.js 进程状态的对象,提供了一个与操作系统的简单接口。
process.argv 是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。
process.stdout 是标准输出流,通常使用console.log() 向标准输出打印字符,而process.stdout.write() 函数提供了更底层的接口。
process.stdin 是标准输入流,初始时它是被暂停的,要想从标准输入读取数据,必须恢复流,并手动编写流的事件响应函数。
**process.nextTick(callback) 功能是为事件循环设置一项任务,Node.js 会在下次事件循环响应时调用callback。

console 用于提供控制台标准输出,它是由Internet Explorer 的JScript 引擎提供的调试工具,后来组建成为浏览器事实标准。Node.js 沿用了这个标准,用于向标准输出流(stdout)或标准错误流(stderr)输出字符。

常用工具util

util 是一个Node.js 核心模块,提供常用的函数的集合,用于弥补核心JavaScript 的功能过于精简的不足。
util.inherits
util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。
注:仅继承原型中定义的函数,而构造函数内部创造的属性不会继承
util.inspect
util.inspect(object, [showHidden],[depth],[colors]) 将任何对象转换为字符窜的方法,通常用于调试和错误的输出。它至少接受一个参数object,即要转换的对象。

事件驱动events

events 是Node.js 最重要的模块,原因是Node.js 本身架构就是事件式的,而它提供了唯一的接口,所以堪称Node.js 事件编程的基石。

事件发射器
events 模块只提供一个对象:events.EventEmitter。
EventEmitter 的核心是事件发射与事件监听器功能的封装。每个事件由一个事件名和若干个参数组成。
EventEmitter.on(event, listener) 为指定事件注册一个监听器,接受一个字符串event 和一个回调函数listener。
EventEmitter.emit(event, [arg1], [arg2], […]) 发射event 事件,传递若干可选参数到事件监听器的参数表。
EventEmitter.once(event, listener) 为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发之后立刻解除该监听器。
EventEmitter.removeListener(event, listener) 移除指定事件的某个监听器,listener 必须是该事件已经注册过的监听器。
EventEmitter.removeAllListener([event]) 移除所有事件的所有监听器,如果指定event,则移除指定事件所有监听器。

error 事件
EventEmitter 定义了一个特殊的事件error,当遇到异常时通常会发射error 事件。
当error 被发射时,EventEmitter 规定如果没有响应的监听器,Node.js 会把它当作异常,退出程序并打印调用栈。
注:一般要为会发射error 事件的对象设置监听器,避免遇到错误整个程序崩溃

继承EventEmitter
只要支持事件响应的核心模块都是EventEmitter 的子类。包括fs、net、http 在内的,只要是支持相应的核心模块都是EventEmitter 的子类。

文件系统fs

fs 模块是文件操作的封装,它提供了文件的读取、写入、更名、删除、便利目录、链接等POSIX 文件系统操作。
注:POSIX 表示可移植操作系统接口,POSIX 标准定义了操作系统应用程序提供的接口标准。

fs.readFile(异步)
fs.readFIle(filename, [encoding], [callback(err, data)])

fs.readFileSync(同步)
fs.readFileSync(filename, [encoding])

fs.open
fs.open(path, flags, [mode], [callback(err, fd)]) 是POSIX open 函数的封装,path 为文件的路径,flags 可以是一下值。
r:以读取模式打开文件。 r+:以读写模式打开文件
w:以写入模式打开文件,如果文件不存在则创建。
w+:以读写模式打开文件,如果文件不存在则创建。
a: 以追加模式打开文件,如果文件不存在则创建。
a+:以读取追加模式打开文件,如果文件不存在则创建。

fs.read
fs.read(fd, buffer, offset, length, position, [callback(err, bytesRead, buffer)]) 是POSIX read 函数的封装,相比fs.readFile 提供了更底层的接口。

HTTP 服务器与客户端

Node.js 标准库提供了http 模块,其中封装了一个高效的HTTP 服务器和一个简易的HTTP 客户端。
HTTP 服务器
http.Server 是一个基于事件的HTTP 服务器,它的核心由Node.js 下层C++ 部分实现,而接口由JavaScript 封装,兼顾了高性能与简易性。
http.Server 是http 模块中的HTTP 服务器对象,用于Node.js 做的所有基于HTTP协议的系统。它提供了一套封装级别很低的API,仅仅是控制和简单的消息解析,所有的高层功能都要通过它的接口来实现。

var http = require('http');

http.createServer(function(req,res){
    res.writeHead(200, {'Content-Type':'text/html'});
    res.write('<h1>Node.js</h1>');
    res.end('<p>Hello World</p>');
}).listen(3000);

console.log('HTTP server is listening at port 3000.');

http.createServer 创建了一个http.Server 的实例,将一个函数作为HTTP 请求处理函数。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马Node.js学习笔记是一本关于Node.js的学习资料,其包含了关于模块化规范的内容。模块化规范是对代码进行模块化的拆分与组合时需要遵守的规则。在Node.js模块可以分为内置模块、自定义模块和第三方模块。内置模块是由Node.js官方提供的,例如fs、path、http等。自定义模块是用户创建的每个.js文件,可以通过require方法加载。第三方模块是由第三方开发的模块,需要先下载后才能使用。在每个.js自定义模块都有一个module对象,它存储了和当前模块有关的信息。注意,在同一个模块不要同时使用exports和module.exports。在Node.js,加载某个模块实际上是加载该模块的module.exports属性。npm是Node.js的包管理工具,可以用于下载和管理第三方模块,而第三方模块也被称为包。总之,黑马Node.js学习笔记提供了关于Node.js模块化规范的详细解释和使用方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [黑马程序员node.js学习笔记](https://blog.csdn.net/weixin_50523986/article/details/129937301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值