Node.js精进(5)——HTTP】的更多相关文章

模块化是一种将软件功能抽离成独立.可交互的软件设计技术,能促进大型应用程序和系统的构建. Node.js内置了两种模块系统,分别是默认的CommonJS模块和浏览器所支持的ECMAScript模块. 其中,ECMAScript模块是在8.5.0版本中新增的,后面又经过了几轮的迭代.本文若无特别说明,那么分析的都是CommonJS模块. 顺便说一句,本系列分析的是Node.js的最新版本18.0.0,在Github上下载源码后,可以关注下面3个目录. ├── deps 第三方依赖 ├── lib…
虽然 Node.js 是单线程的,但是在融合了libuv后,使其有能力非常简单地就构建出高性能和可扩展的网络应用程序. 下图是 Node.js 的简单架构图,基于 V8 和 libuv,其中 Node Bindings 为 JavaScript 和 C++ 搭建了一座沟通的桥梁,使得 JavaScript 可以访问 V8 和 libuv 向上层提供的 API. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.术语解析 接下来会对几个与 Node.js 相关的术语做单独的解析,其中…
在 JavaScript 中,一般只处理字符串层面的数据,但是在 Node.js 中,需要处理网络.文件等二进制数据. 由此,引入了Buffer和Stream的概念,两者都是字节层面的操作. Buffer 表示一块专门存放二进制数据的缓冲区.Stream 表示流,一种有序.有起点和终点的二进制传输手段. Stream 会从 Buffer 中读取数据,像水在管道中流动那样转移数据. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.Buffer Buffer 是 JavaScript…
Events 是 Node.js 中最重要的核心模块之一,很多模块都是依赖其创建的,例如上一节分析的流,文件.网络等模块. 比较知名的 Express.KOA 等框架在其内部也使用了 Events 模块. Events 模块提供了EventEmitter类,EventEmitter 也叫事件触发器,是一种观察者模式的实现. 观察者模式是软件设计模式的一种,在此模式中,一个目标对象(即被观察者对象)管理所有依赖于它的观察者对象. 当其自身状态发生变化时,将以广播的方式主动发送通知(在通知中可携带一…
HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种获取网络资源(例如图像.HTML文档)的应用层协议,它是互联网数据通信的基础,由请求和响应构成. 在 Node.js 中,提供了 3 个与之相关的模块,分别是 HTTP.HTTP2 和 HTTPS,后两者分别是对 HTTP/2.0 和 HTTPS 两个协议的实现. HTTP/2.0 是 HTTP/1.1 的扩展版本,主要基于 Google 发布的 SPDY 协议,引入了全新的二进制分帧层,保留了 1.1 版…
文件系统是一种用于向用户提供底层数据访问的机制,同时也是一套实现了数据的存储.分级组织.访问和获取等操作的抽象数据类型. Node.js 中的fs模块就是对文件系统的封装,整合了一套标准 POSIX 文件 I/O 操作的集合,包括文件的读写.删除.遍历.重命名等操作. fs 模块中的所有方法都提供了三种形式:回调.同步和 Promise ,其中 Promise 是在 Node.js 的版本 10 中引入的. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.三种形式 在回调形式的方…
在 Node.js 中,提供了console模块,这是一个简单的调试控制台,其功能类似于浏览器提供的 JavaScript 控制台. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.原理 与浏览器一样,Node.js 也提供了一个全局变量 console(实例化 Console 类),可调用 log().error() 等方法. 1)同步还是异步 console 的方法既不像浏览器中那样始终同步,也不像 Node.js 中的流那样始终异步. 是否为同步取决于链接的是什么流以及操作…
在 Node.js 中,提供了 error 模块,并且内置了标准的 JavaScript 错误,常见的有: EvalError:在调用 eval() 函数时出现问题时抛出该错误. SyntaxError:调用不符合 JavaScript 的语法时抛出该错误. RangeError:超出可接受值的集合或范围,例如数组越界. ReferenceError:访问未定义的变量时抛出该错误. TypeError:参数或变量的类型有问题时抛出该错误. URIError:使用全局的 URI 处理函数发生问题时…
市面上成熟的 Node.js 性能监控系统,监控的指标有很多. 以开源的 Easy-Monitor 为例,在系统监控一栏中,指标包括内存.CPU.GC.进程.磁盘等. 这些系统能全方位的监控着应用的一举一动,并且可以提供安全提醒.在线分析.导出真实状态等服务. 本专题分为上下两个篇章,会简单分析下在 Node.js 环境中的几个资源瓶颈,包括CPU .内存和进程奔溃,并且会给出相应的监控方法. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.CPU 在 Linux 系统中,可以通…
本节会重点分析内存和进程奔溃,并且会给出相应的监控方法. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.内存 虽然在 Node.js 中并不需要手动的对内存进行分配和销毁,但是在开发中因为程序编写问题也会发生内存泄漏的情况. 所以还是有必要了解一些 Node.js 开放的内存操作和常见的内存泄漏场景. 1)内存指标 Node.js 项目在启动后(例如 node index.js),会创建一个服务进程.进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度…