nodejs
目录:
基础知识
数据流与文件系统
网络处理
进程处理
错误与调试
其他
数据库处理
适合node的场景1)对高并发有要求 2)对计算要求不高
为什么?
- 传统服务端语言如java php是多线程,会为每个连接创建一个线程(平均每个线程消耗2M),因此资源相同node可以连接更多用户。另外,多线程意为着处理结果需要共享,比如同一个用户使用多个端在不同线程上,一个线程发生变化另一个线程需要共享这种处理结果。
- 非阻塞I/O 这里主要指与数据库交互,其他语言是阻塞型,执行效率更高
- 事件循环 其实就是将各种操作作为事件处理
模块
nodejs会提供核心的模块,使得js脚本能胜任服务端的工作,有些模块是内置的有些则需要安装依赖(弄过分模块就明白这样做的好处)
模块名 | 作用 | 稳定程度 |
---|---|---|
File System 文件系统 | 用于操作文件及文件系统 | 稳定(3) |
Path 路径 | 用于处理文件路径 | 稳定(3) |
ZLIB 压缩 | 使用zlib类库实现数据的压缩及解压 | 稳定(3) |
Crypto 加密 | 实现数据的加密解码处理 | 不稳定(2) |
Stream 流 | 用于为流输入/输出处理提供一个基础类 | 不稳定(2) |
Buffer 二进制流处理 | 用于实现二进制流的存储与转换 | 稳定(3) |
Readline 逐行读取 | 用于读取一行标准输入流 | 不稳定(2) |
Punycode 编码与解码 | 用于实现punycode字符串的编码与解码 | 不稳定(2) |
String Decoder 字符串解码器 | 用于实现从二进制数据到字符串数据之间的转换 | 稳定(3) |
Net 网络 | 用于创建tcp服务器与客户端 | 稳定(3) |
DNS 域名服务器 | 用于实现与DNS相关的处理 | 稳定(3) |
HTTP | 用于实现HTTP服务器与客户端 | 稳定(3) |
HTTPS | 用于实现HTTPS服务器与客户端 | 稳定(3) |
TLS 安全传输层 | 用于OpenSSL来实现TSL/SSL通信处理 | 稳定(3) |
Domain 域 | 用于实现多个I/O之间的协作处理 | 不稳定(2) |
UDP/Datagram 数据报 | 用于实现socket | 稳定(3) |
URL | 用于实现URL字符串解析与格式化 | 稳定(3) |
Query Strings 查询字符串 | 用于处理http请求中的查询字段 | 稳定(3) |
OS 操作系统 | 用于获取操作系统信息 | 非常稳定(4) |
TTY 终端 | 用于获取来自TTY终端信息 | 不稳定(2) |
REPL 交互式辨析器 | 用于实现REPL交互式运行环境 | 无 |
CLI 命令行选项 | 用于实现命令行集成 | 稳定(3) |
Console 控制台 | 用于为控制台输出信息 | 非常稳定(4) |
Debugger 调试器 | 用于实现内置调试器 | 稳定(3) |
Error 错误 | 错误对象 | 非常稳定(4) |
Assert 断言 | 为应用程序的单元测试提供断言处理 | 特别稳定(5) |
VM 虚拟机 | 用于为js提供一个独立运行环境 | 不稳定(2) |
V8 | 用于实现js脚本解释引擎 | 稳定(3) |
C/C++ 插件 | 用于事件c与c++拓展 | 无 |
Global 全局 | 用于提供全局对象 | 无 |
Modules 模块 | 用于提供模块化 | 稳定(3) |
Events 事件 | 用于为事件处理提供一个基础类 | 非常稳定(4) |
Cluster 集群 | 用于实现多进程 | 稳定(3) |
child Processes 子进程 | 用于实现子进程的创建与管理 | 稳定(3) |
Process 进程 | 用于实现进程管理 | 稳定(3) |
Timer 定时器 | 用于实现定时器 | 稳定(3) |
Util 实用工具 | 用于实现各种实用函数 | 特别稳定(5) |