# Node.JS
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用了一个事件驱动、非阻塞式 I/O 的模型,为 JavaScript 提供了一个服务器端应用程序开发平台,👉 https://nodejs.org/ / https://nodejs.dev/
OpenJS Foundation (opens new window) - 开源 JS 基金会,由 Node 基金会和 JS 基金会合并而成。
# 技术标准规范
Technical standard specification.
Node.js (opens new window) - Node.js 官方网站。👉 新站点 (opens new window)
- V8 (opens new window) - Node.js 的运行时,也是 Chrome 浏览器的 JS 运行时。👉 中文翻译 (opens new window)
- CommonJS (opens new window) - Node.js 默认采用的模块加载方式。
- AMD (opens new window) - 异步模块定义,适合浏览器端。
- Universal Module Definition (opens new window) - 通用模块定义,兼容 AMD、CommonJS 以及全局变量方式。
Worker Runtimes (opens new window) - 构建 HTTP 服务器的新标准。
More others 👉 Awesome-Development-Technical-Standard-Specifications
# 技术参考文档
Official and unofficial technical reference documents.
标准实现状态(Standard implementation status)
- compatibility table (opens new window) - 可查询 ECMAScript API 在各个版本 Node.js 实现的状态,非官方网站。
Node.js 中文网 (opens new window) - 唯一与官方同步更新的 Node.js 中文文档。
Node.js Best Practices (opens new window) - Node.js 最佳实践。
nodejs-integration-tests-best-practices (opens new window) - Node.js 后端集成测试最佳实践。
# Node 版本管理
Node version management, can install multiple versions at the same time, and switch at any time.
- n (opens new window) - npm 包,Node 版本管理工具,不支持 Windows 系统。
- nvm (opens new window) - Node 版本管理,不支持 Windows 系统。
- nvm-windows (opens new window) - Node 版本管理工具,仅支持 Windows 系统。
- fnm (opens new window) - Rust 编写的 Node 版本管理工具,支持 Windows/Linux/Mac 系统。
# Node 包管理
Node.js package (or library) manage.
包管理器(Packages Manageer)
- npm (opens new window) - Node.js 的官方包管理器。
- Yarn (opens new window)
- pnpm (opens new window) - 支持 Monorepo 仓库。
- Bower (opens new window) - (⚠️ 不再积极维护)
包开发(Package Development)
npm publish
- np (opens new window) - 让发布更优雅、安全。
- standard-version (opens new window) - 自动化版本管理和变更日志生成。
- release-it (opens new window)
- semantic-release (opens new window) - CI 自动化版本管理和包发布。
- auto (opens new window) - CI 自动化发布。
- Denoify (opens new window) - 为 npm 模块作者提供 Deno 支持。
包搜索(Package Search)
- OpenBase JavaScript (opens new window) - npm 模块分类排名。
- Npm Trends (opens new window) - 可以查询对比多个 Npm 包的下载流量数据、star 数目等。
- Moiva (opens new window) - 比较 Github 和 npm 包下载趋势,关注度等等。
- PickBetterPack (opens new window) 根据
package.json
文件分析已安装包的相似的依赖包。 - Npm Charts (opens new window) - 可以查询对比多个 Npm 包的下载流量数据、star 数目等。
- Microjs (opens new window) - 查询可用的最小的包。
- vanilla list (opens new window) - 查询可用的最小的包。
包分析(Package Analysis)
- BUNDLEPHOBIA (opens new window) - 分析 npm 包大小和依赖关系。
- Package Phobia (opens new window) - 分析 npm 包大小。
- runpkg (opens new window) - 在线浏览 npm 包内的文件内容。
Monorepo (opens new window) 工具(Monorepo Tools)
- monorepo.tools (opens new window)
- Lerna (opens new window) - 管理 Monorepo 架构的 Node 模块代码库工具。
- Nx (opens new window) - 管理 Monorepo 架构的 Node 模块代码库工具。
工具(Tools)
- Verdaccio (opens new window) - 开源的轻量级私有 npm 代理仓库。
- nrm (opens new window) - npm 换源。
- npm-check-updates (opens new window) - 项目依赖 npm 包批量更新工具。
- depcheck (opens new window) - 项目依赖检查。
- depp (opens new window) - 项目依赖检查,是否存在未使用或者重复的依赖。
- npkill (opens new window) - 搜索系统中的 node_modules 文件夹并清理。
- njt (opens new window) - npm jump to,npm 包搜索并跳转到相应 npm 站点。
- patch-package (opens new window) - 对模块打补丁进行修复。
# 构建工具
Build tools.
see also 👉 JS-构建工具
文档(Doc)
- JSDoc (opens new window) - JavaScript 的 API 文档生成工具。
- ESDoc (opens new window)
- typedoc (opens new window) - 生成 TypeScript 项目文档。
配置(Config)
- dotenv (opens new window) - 从 .env 文件为 Node.js 项目加载环境变量。
- node-config (opens new window)
- cosmiconfig (opens new window) - 搜索并加载配置文件。
环境变量(Environment variable)
- cross-env (opens new window) - 为 npm 脚本配置和使用环境变量提供跨平台支持。
- Envalid (opens new window) - 环境变量校验。
日志(Log)
- log4js (opens new window) - 日志记录。
- winston (opens new window) - 简单通用的日志库。
- pino (opens new window) - 简单的 JSON 日志记录器。
- tslog (opens new window)
- bunyan (opens new window)
- Cabin (opens new window)
调试(Debug)
- debug (opens new window) - 打印 debug 日志。
性能分析(profiling )
- 0x (opens new window)
- clinic.js (opens new window) - 性能分析、监控、指标收集。
测试(Test)
- Mocha (opens new window)
- jest (opens new window)
- ts-jest (opens new window) - 带 TypeScript 类型检查的 jest 编译转换器。
- supertest (opens new window) - 基于
superagent
模块的 HTTP 断言。 - Sinon.JS (opens new window) - 对复杂功能进行模拟,以更好的完成单元测试。
- Polly.js (opens new window) - HTTP 模拟。
模拟 API(Mock API)
- JSON Server (opens new window) - 可快速启动一个提供 REST API 的服务器,并返回指定测试数据。
- Nock (opens new window) - 模拟 API 服务,响应指定测试数据。
- Mock.js (opens new window) - 模拟 API 服务,响应随机测试数据。
- Mock Service Worker (opens new window) - 利用
Service Worker
API 拦截请求并实现 Mock API。 - Mirage JS (opens new window)
- faker.js (opens new window) - 生成大量随机测试数据,可用来开发过程中进行 API 调试。
- Chance (opens new window) - 生成随机的测试数据。
代码版本管理(Code version management )
- husky (opens new window) - 更容易的使用 Git Hooks (opens new window)。
- lint-staged (opens new window) - 搭配 husky 使用,提交代码前进行 lint。
- commitlint (opens new window) - 校验 commit 信息。
- commitizen (opens new window) - 统一 commit 信息格式。
进程管理(Process Manage)
- 热重载(Hot reload)
- 生产部署
- Forever (opens new window) - Node 应用生产环境进程管理工具,使用简单方便。
- PM2 (opens new window) - Node 应用生产环境进程管理工具,支持集群、负载、远程部署,提供收费服务的实时监控平台。
- StrongLoop-PM (opens new window) - Node 应用生产环境进程管理工具。(⚠️ 不再积极开发)
- cluster-service (opens new window)
编译器(Compiler)
- TS Node (opens new window) - Node.js 的 TypeScript 语言运行器和交互式解释器。
- Neon (opens new window) - Rust 的 Node.js 绑定,可用来编写快速、安全的原生模块。
- Ruby (opens new window) 2 JavaScript
- Opal (opens new window)
- Ruby2JS (opens new window) - Ruby 到现代 JavaScript 代码的转换器。
- Scala (opens new window) 2 JavaScript
- F# (opens new window) 2 JavaScript
打包工具(Bundler)
- Rollup (opens new window) - 打包工具,适合开发库、框架。
其它(Others)
- esm (opens new window) - 能够为
.js
文件提供 ECMAScript Modules (opens new window) 支持。 - envinfo (opens new window) - 生成开发环境信息报告。
- Madge (opens new window) - 生成可视化的模块依赖图。
- devcert (opens new window) - 让 SSL 开发变得容易。
- live-server (opens new window) - 具有实时重新加载页面功能的轻量静态资源 HTTP 服务器。
- esm (opens new window) - 能够为
# 工具库
Tool Library, some unofficial high-quality Node.js packages (or libraries).
see also 👉 JS-工具库 | awesome-nodejs (opens new window)
异步操作(Asynchronous operation)
- promise-fun (opens new window) -
Promise
工具库集合。
- promise-fun (opens new window) -
多进程/线程编程(Multi-process/thread programming)
- 线程池
- workerpool (opens new window) - 轻量线程池工具,支持 Node.js 与 Web 浏览器环境。
- piscina (opens new window)
- threads.js (opens new window) - 在浏览器和 Node.js 环境中实现一致的 Web Worker API。
- 工具(Tools)
- execa (opens new window) - 对官方
child_process
(opens new window) 模块的改进。
- execa (opens new window) - 对官方
- 线程池
数据校验(Data Validation)
- ajv (opens new window) - JSON Schema validator。
- joi (opens new window)
- yup (opens new window)
- v8n (opens new window)
- ow (opens new window) - 方法参数校验。
- async-validator (opens new window) - validate form asynchronous
数据操作(Data Manipulation)
- Danfo.js (opens new window) - 处理结构化数据的工具库,类似 Python 的 Pandas (opens new window)。
- bson (opens new window) - BSON 格式数据解析器,MongoDB 官方发布。
- construct-js (opens new window) - Byte 级别数据操作工具库。
数据加密、解密(Data encryption and decryption)
- bcrypt (opens new window) - 生成密码哈希值。
文件(File)
- utils tools
- fs-extra (opens new window) - 作为官方原生
fs
(opens new window) 模块的补充和优化。 - chokidar (opens new window) - 作为官方原生
fs.watch
替代方案,跨平台高效的文件监视库。 - rimraf (opens new window) - 为 Node 提供类似
rm -rf
删除文件操作。 - memfs (opens new window) - 内存文件系统。
- rotating-file-stream (opens new window) - 文件流自动轮转,可用于日志文件分割,类似 UNIX
logrotate
。 - file-type (opens new window) - 探测文件类型。
- filesize.js (opens new window) - 测量文件大小并以人类可读的方式展示。
- fdir (opens new window) - 最快的目录搜索器。
- Tmp (opens new window) - 生成临时文件和目录。
- matching
- minimatch (opens new window)
- globby (opens new window) - 基于
fast-glob
,模式匹配。
- fs-extra (opens new window) - 作为官方原生
- html/xml
- jsdom (opens new window) - Web 标准的纯 JavaScript 实现。
- cheerio (opens new window) - 包装了parse5 (opens new window) 和 htmlparser2 (opens new window) 的轻量级 HTML 文档解析库,具有类 jQuery 的 api。
- markdown
- Marked (opens new window) - Markdown 解析器。(支持 Web)
- markdown-it (opens new window) - Markdown 解析器。(支持 Web)
- gray-matter (opens new window) - 解析 Front Matter (opens new window)。
- front-matter (opens new window) - 解析 Front Matter。
- yaml
- js-yaml (opens new window) - yaml 文件解析和生成。
- zip
- ADM-ZIP (opens new window)
- Archiver (opens new window) - 生成存档文件的流式接口。
- node-stream-zip (opens new window) - 支持大的 zip 文件。
- csv
- CSV (opens new window) - 功能全面的 csv 文件生成、解析、转换、序列化工具。
- docx
- officegen (opens new window) - 生成 Office 文档。
- image
- sharp (opens new window) - 图像处理,拉伸、缩放、色彩提取等等,底层使用 libvips (opens new window),无需安装其它依赖,开箱即用,效率更高。
- gm (opens new window) - 图像处理,需先安装 GraphicsMagick (opens new window) 或 ImageMagick (opens new window)。
- svg
- SVGO (opens new window) - SVG 文件优化工具。
- utils tools
HTML 模板引擎(HTML Template Engines)
HTTP 服务器(Static HTTP Server)
- http-server (opens new window) - 可快速启动一个轻量的 http 服务器。
- serve (opens new window) - 轻量的 http 服务器。
- CORS Anywhere (opens new window) - 反向代理服务器。
HTTP 请求(HTTP Request)
- form-data (opens new window) - 创建
multipart/form-data
数据,并提供正确的 Headers。 - formidable (opens new window) - 解析请求中的
multipart/form-data
数据。 - Busboy (opens new window) - 解析请求中的
multipart/form-data
数据,支持流。
- form-data (opens new window) - 创建
远程过程调用(RPC)
- Lounge (opens new window) - 现代的 Web RPC 客户端。
套接字(Socket)
- Socket.IO (opens new window) - 基于事件的实时通信框架,提供客户端(浏览器)和服务器实现。
- SockJS (opens new window) - 提供客户端(浏览器)和服务器实现。
- WebSocket-Node (opens new window)
- ws (opens new window) - Node.js WebSocket 客户端和服务器。
- faye-websocket (opens new window)
队列与作业调度(Queue & Job scheduling)
- node-schedule (opens new window) - 支持
cron
方式。 - node-cron (opens new window) - 简单的基于
cron
方式的作业调度器。 - cron (opens new window)
- bull (opens new window) - 高性能队列。
- agenda (opens new window)
- Bree (opens new window)
- node-schedule (opens new window) - 支持
沙箱(Sandbox)
邮件(SMTP)
- Nodemailer (opens new window) - 邮件发送。
- mailgen (opens new window) - 生成响应式 HTML 电子邮件模版。
无头浏览器(Headless Browser)
系统组件(System Components)
- node-notifier (opens new window) - 跨平台原生通知功能。
原生 API(Native)
- node-windows (opens new window) - Windows 平台对 Node.js 脚本(守护程序,事件日志,UAC 等)的支持。
- systeminformation (opens new window) - 获取系统信息。
其它(Others)
- ssh2 (opens new window) - SSH 客户端和服务器。
- nodegit (opens new window)
# 命令行工具
Command line tools and tools used to develop command line applications.
社区实践(Community Practice)
- Node.js CLI Apps Best Practices (opens new window) - 开发 Node.js 命令行应用的最佳实践。
zx (opens new window) - 编写 JavaScript 脚本,而非 Bash 脚本。
实用工具(Utils)
- chalk (opens new window) - 终端输出字符串样式工具,支持全部的色彩。
- configstore (opens new window) - 持久化命令行应用的配置。
- minimist (opens new window) - 命令行参数解析器。(npm 官方解析器 nopt (opens new window))
- commander (opens new window) - 简单的命令行接口。
- yargs (opens new window) - 解析参数,构建交互式命令行程序。
- prompts (opens new window) - 轻量、漂亮的交互式命令行提示。
- inquirer (opens new window) - 交互式命令行。
- readlineSync (opens new window) - 同步版本的
readline
,命令行对话式交互。 - concurrently (opens new window) - 并行执行多个命令。
- tasuku (opens new window) - 任务运行器,可在终端展示运行状态。
- shell.js (opens new window) - 基于 NOde.js 的 Unix Shell 命令的可移植实现。
- Progress / Loading
- ora (opens new window) - 终端 spinner 效果。
- progress (opens new window) - 进度条。(⚠️ 不再积极开发)
- cli-progress (opens new window) - 进度条。
- table (opens new window) - 将数组数据打印成字符串表格。
命令行应用开发框架(CLI App Dev)
- Ink (opens new window) - 用 React.js 开发命令行应用。
- Caporal (opens new window) - 全功能命令行应用开发框架。
- oclif (opens new window) - 命令行工具开发框架。
- meow (opens new window) - 命令行应用开发工具包。
- Gluegun (opens new window) - 命令行应用开发工具包。
- Terminal Kit (opens new window) - 编写命令行程序的工具包。
- blessed (opens new window) - 高级终端接口库。
- blessed-contrib (opens new window) - 仪表面板工具库。
可执行程序(Executable)
- pkg (opens new window) - 将 Node.js 脚本打包成单个可执行文件。
- nexe (opens new window)
# 数据库
Database.
Knex.js (opens new window) - SQL 生成器,支持 Node.js 与浏览器环境。
mongodb (opens new window) - MongoDB (opens new window) 的 Node.js 驱动,MongoDB 官方发布。
- mongoose (opens new window) - 对象文档映射(ODM),对 mongodb 的封装,提供模型 Schema,API 更简洁、易用。
mysql (opens new window) - MySQL (opens new window) 的 Node.js 驱动,非官方发布。
sqlite3 (opens new window) - SQLite (opens new window) 的 Node.js 驱动,异步、非阻塞,非官方发布。
- better-sqlite3 (opens new window) - 比 node-sqlite3 更快更简单的 API。
GraphQL (opens new window) - 开源的数据库查询语言。
Prisma (opens new window) - 数据库工具套件。
PostgreSQL
- PostGraphile (opens new window) - 为已有的 PostgreSQL 数据库提供 GraphQL API 支持。
- pg-promise (opens new window) - PostgreSQL 的 Node.js 接口。
对象关系映射(ORM)
- Sequelize (opens new window) - 基于 Promise 的 Node.js ORM 库,支持 Postgres, MySQL, MariaDB, SQLite 和 Microsoft SQL Server。
- TypeORM (opens new window) - 可以运行在所有 JS 技术栈中的 ORM 库,支持主流数据库。
- Objection.js (opens new window) - 基于
Knex.js
构建。 - Bookshelf (opens new window) - 基于
Knex.js
构建。 - mikro-orm (opens new window) - TypeScript ORM 库,支持 MongoDB, MySQL, MariaDB, PostgreSQL 和 SQLite。
ioredis (opens new window) - 高性能、全功能的 Redis 客户端。
lowdb (opens new window) - 本地 JSON 数据库。
# Web 框架
Node.js-based server development framework.
Connect (opens new window) - 可扩展的 HTTP 服务器开发框架,使用中间件机制,早期的 Express (opens new window) 基于此开发。
Express (opens new window) - 非常成熟的 Web 开发框架。
- express-session (opens new window) - Express 中间件,提供 Session-Cookie 机制的支持,官方发布。
- body-parser (opens new window) - Express 中间件,对 request 的 body 进行预处理,官方发布。
- Multer (opens new window) - Express 中间件,处理
multipart/form-data
表单数据,官方发布。 - morgan (opens new window) - Express 中间件,请求日志记录,官方发布。
- Passport.js (opens new window) - 身份验证中间件,可在基于 Express 的 Node.js 框架中使用。
Koa (opens new window) - 轻量级、高性能的 Web 框架,Express 团队开发。
- AdminBro (opens new window) - 应用管理面板,Koa 官方提供插件支持。
Restify (opens new window) - 可快速构建 RESTful API 的框架。
Fastify (opens new window) - 高性能、低消耗的 Web 框架。
NestJs (opens new window) - 基于 Express / fastify 的渐进式 Web 框架。
hapi (opens new window) - 注重安全、简洁的 Web 框架。
Feathers (opens new window) - 轻量的、面向服务的构建实时 Web 应用和 REST APIs 的框架。
Sails.js (opens new window) - 实时的 MVC 框架。
Adonis.js (opens new window) - 全栈 MVC 框架。
# 内容管理系统
Content Management System.
- Strapi (opens new window) - 开源的无头 CMS。
- Keystone (opens new window)
# 桌面端开发
Desktop-side application development framework.
- Electron (opens new window) - 基于 Node.js 与 Chromium 技术的开源跨平台桌面端应用开发解决方案。
- NW.js (opens new window) - 基于 Node.js 与 Chromium 技术的开源跨平台桌面端应用开发解决方案。
- Neutralino (opens new window) - 轻量级跨平台桌面端应用开发框架。
- NodeGui (opens new window)
- robot.js (opens new window) - 桌面端自动化库。
- tauri (opens new window)
# 深入探索
Explore the principles behind the technology, the underlying architecture, etc.
# 引擎/运行时
Engine / Runtime.
- 事件循环(Event Loop)
# 服务器优雅关机
Graceful server shutdown.
- healthcheck-graceful-shutdown (opens new window)
- Graceful shutdown with Node.js and Kubernetes (opens new window)
- Graceful server shutdown with Node.js and Express (opens new window)
- Building Graceful Node Applications in Docker (opens new window)
# 文章
Article.
- Write an Open Source JavaScript Library (opens new window) - 如何编写开源 JavaScript 库,并且发布到 npm。
- Setting up multi-platform npm packages (opens new window) - 多平台支持的 npm 包配置。
- Deepal's Blog Articles on NodeJS (opens new window) - Deepal 的博客文章,Node.js 相关,比较有深度。
- BFF(Backends For Frontends)
- Running CPU-Bound Tasks in Node.js: Introduction to Worker Threads (opens new window) - 在工作线程中运行 CPU 密集型任务。
# 更多
More other unclassified resources.
- JavaScript Open Source Award (opens new window) - JavaScript 开源项目奖,非官方。
- Testing Library (opens new window) - 包含了众多测试工具项目。
- awesome-nodejs-security (opens new window) - Node.js 安全相关工具。
- NodeBB (opens new window) - 开源论坛软件。
- AdminBro (opens new window) - Node.js 应用管理面板系统。