随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生态系统,以实现快速技术选型!
本文参考自 Node.js Toolbox( https://nodejstoolbox.com/) 中的数据,Node.js Toolbox 是一个开源的 Node.js 工具,用于在 Node.js 生态系统中查找积极维护且流行的库。
访问控制
根据各种访问控制模式限制用户操作。
@casl/CASL
CASL是一个同构授权 JavaScript 库,它限制允许给定用户访问的资源。
Github:https://github.com/stalniy/casl
casbin
Node.JS 中支持 ACL、RBAC、ABAC 等访问控制模型的授权库。
Github:https://github.com/casbin/node-casbin
accesscontrol
Node.js 基于角色和属性的访问控制。
Github:https://github.com/onury/accesscontrol
浏览器测试
编写在真实浏览器环境中运行的自动化测试。
Cypress
Cypress 是专为现代网络构建的下一代前端测试工具。
Github:https://github.com/cypress-io/cypress
puppeteer
通过 DevTools 协议控制无头 Chrome 的高级 API。
Github:https://github.com/puppeteer/puppeteer
@playwright/test
用于自动化 Web 浏览器的高级 API。
Github:https://github.com/Microsoft/playwright
SeleniumHQ/selenium
来自 Selenium 项目的官方 WebDriver JavaScript 绑定。
Github:https://github.com/SeleniumHQ/selenium
webdriverio
Node.js 的下一代浏览器和移动自动化测试框架。
Github:https://github.com/webdriverio/webdriverio
构建系统
管理包含多个不同项目的代码库 (Monorepos)。
Lerna
Lerna 是一个快速、现代的构建系统,用于管理和发布来自同一存储库的多个 JavaScript/TypeScript 包。
Github:https://github.com/lerna/lerna
turbo
Turborepo 是一个用于 JavaScript 和 TypeScript 代码库的高性能构建系统。
Github:https://github.com/vercel/turbo
nx
核心 Nx 插件包含 Nx 的核心功能,如项目图、nx 命令和任务编排。
Github:https://github.com/nrwl/nx
构建工具
将应用的源代码打包到单个文件中,主要用于前端应用程序以最大限度地减少网络请求。
Webpack
为浏览器打包 ECMAScript/CommonJs/AMD 模块。允许将代码库拆分为多个包,可以按需加载。支持加载器预处理文件,即 json、jsx、es7、css、less 以及自定义内容。
Github:https://github.com/webpack/webpack
esbuild
一个极其快速的 JavaScript 和 CSS 打包器和压缩器。
Github:https://github.com/evanw/esbuild
rollup
下一代 ES 模块打包工具。
Github:https://github.com/rollup/rollup
代码复杂度
分析和可视化代码复杂性以帮助重构(遗留)代码库
Typhonjs-escomplex
基于 Babel 解析器的下一代 Javascript 和 Typescript 复杂性报告。
Github:https://github.com/typhonjs-node-escomplex/typhonjs-escomplex
plato
JavaScript 源代码分析和可视化工具。
Github:https://github.com/es-analysis/plato
代码图
生成代码内部依赖关系的可视化图表。
madge
从模块依赖关系创建图表。
Github:https://github.com/pahen/madge
dependency-cruiser
验证并可视化依赖关系。按照规则,JavaScript、TypeScript、CoffeeScript。ES6、CommonJS、AMD。
Github:https://github.com/sverweij/dependency-cruiser
代码检查和格式化程序
在交付生产之前格式化代码并解决问题。
eslint
一个基于 AST 的 JavaScript 模式检查器。
Github:https://github.com/eslint/eslint
Prettier
Prettier 是一个代码格式化程序。
Github:https://github.com/prettier/prettier
@typescript-eslint/eslint-plugin
ESLint 的 TypeScript 插件。
Github:https://github.com/typescript-eslint/typescript-eslint
命令行提示
通过询问用户输入创建交互式命令行工具。
inquirer
常见交互式命令行用户界面的集合。
Github:https://github.com/SBoudrias/Inquirer.js
prompts
轻量、美观、人性化的提示。
Github:https://github.com/terkelg/prompts
enquirer
时尚、直观、人性化的提示系统。对于小型项目来说足够快速和轻量,对于最先进的用例来说足够强大和可扩展。
Github:https://github.com/enquirer/enquirer
命令行样式
创建漂亮的命令行工具。
chalk
终端字符串样式正确完成
Github:https://github.com/chalk/chalk
命令行实用程序
使用 Node.js 创建强大的命令行应用。
commander
Node.js 命令行程序的完整解决方案。
Github:https://github.com/tj/commander.js
yargs
Yargs 框架通过使用 Node.js 构建功能全面的命令行应用,它能轻松配置命令,解析多个参数,并设置快捷方式等,还能自动生成帮助菜单。
Github:https://github.com/yargs/yargs
minimist
一个用来解析命令行选项的库。
Github:https://github.com/minimistjs/minimist
CSV 解析器
从 Node.js 处理 CSV 文件。
csv-parse
CSV 解析实现 Node.js stream.Transform
API。
Github:https://github.com/adaltas/node-csv
papaparse
适用于浏览器的快速而强大的 CSV 解析器,支持 Web Worker 和流式处理大文件。将 CSV 转换为 JSON 以及将 JSON 转换为 CSV。
Github:https://github.com/mholt/PapaParse
时间&日期
比标准库更直观的日期和时间方法。
moment
解析、验证、操作和显示日期。
Github:https://github.com/moment/moment
dayjs
2KB的不可变日期时间库,是Moment.js的现代API的替代方案。
Github:https://github.com/iamkun/dayjs
date-fns
现代 JavaScript 日期实用程序库。
Github:https://github.com/date-fns/date-fns
依赖管理
检查过时的依赖项并手动(或自动)更新它们。
depcheck
查找比 package.json 允许的更新版本的依赖项。
Github:https://github.com/depcheck/depcheck
npm-check-updates
检查是否有过时、不正确和未使用的依赖项。
Github:https://github.com/raineorshine/npm-check-updates
npm-check
自动依赖更新。
Github:https://github.com/dylang/npm-check
电子邮件传送
从 Node.js 轻松发送电子邮件。
nodemailer
从 Node.js 应用发送电子邮件。
Github:https://github.com/nodemailer/nodemailer
Excel 电子表格
在 Node.js 中解析并编写 Excel 电子表格
XLSX
SheetJS 电子表格数据解析器和编写器。
Github:https://github.com/SheetJS/sheetjs
exceljs
Excel 工作簿管理器 - 读写 xlsx 和 csv 文件。
Github:https://github.com/exceljs/exceljs
文件上传
在 Node.js 应用中处理文件上传。
busboy
Node.js HTML 表单数据的流式解析器。
Github:https://github.com/mscdex/busboy
formidable
用于解析表单数据(尤其是文件上传)的 Node.js 模块。
Github:https://github.com/node-formidable/formidable
multer
用于操作“multipart/form-data”的中间件。
Github:https://github.com/expressjs/multer
全栈框架
使用这些框架快速开发全栈应用。
Nest
Nest - 现代、快速、强大的 Node.js Web 框架 (@core)。
Github:https://github.com/nestjs/nest
HTML 抓取工具
从 HTML 中轻松查找并提取所需的数据。
jsdom
许多 Web 标准的 JavaScript 实现。
Github:https://github.com/jsdom/jsdom
cheerio
专为服务器设计的核心 jQuery 的小型、快速且优雅的实现。
Github:https://github.com/cheeriojs/cheerio
HTTP 客户端
发送网络请求并从外部 API 获取数据。
node-fetch
一个轻量级模块,将 Fetch API 引入 Node.js。
Github:https://github.com/node-fetch/node-fetch
axios
适用于浏览器和 Node.js 的基于 Promise 的 HTTP 客户端。
Github:https://github.com/axios/axios
HTTP 框架
基于 HTTP verbs和路由的极简框架。
express
快速、极简的 Web 框架。
Github:https://github.com/expressjs/express
Koa
Koa Web 应用框架。
Github:https://github.com/koajs/koa
HTTP 模拟
模拟网络请求并隔离测试模块。
superagent
优雅且功能丰富的浏览器/Node.js HTTP 以及流畅的 API。
Github:https://github.com/ladjs/superagent
nock
一个 HTTP 模拟和预期测试库,用于 Node.js 平台。
Github:https://github.com/nock/nock
msw
适用于浏览器和 Node.js 的无缝 REST/GraphQL API 模拟库。
Github:https://github.com/mswjs/msw
作业队列
从主线程中安排和处理 CPU 密集型任务。
bull
基于Redis的一个Node.js任务队列管理库。
Github:https://github.com/OptimalBits/bull
bullmq
基于Redis的消息和作业队列。
Github:https://github.com/taskforcesh/bullmq
JSON 模式验证器
使用 JSON Schema 语言来验证用户输入和其他任何内容。
ajv
一个流行的JSON模式验证库,用于验证和校验JavaScript对象是否符合预定义的JSON模式(JSON Schema)。
Github:https://github.com/ajv-validator/ajv
JSON Web Token (JWT)
在 Node.js 中签署并验证 JWT。
jsonwebtoken
JSON Web Token 实现(对称和非对称)。
Github:https://github.com/auth0/node-jsonwebtoken
日志记录
日志记录事件以帮助调试应用中的问题。
npmlog
npmlog 是一个用于在命令行界面输出日志的Node.js库。
Github:https://github.com/npm/npmlog
winston
几乎所有内容的日志记录器。
Github:https://github.com/winstonjs/winston
loglevel
JavaScript 的最小轻量级日志记录,向任何可用的 console.log 方法添加可靠的日志级别方法。
Github:https://github.com/pimterry/loglevel
MongoDB 客户端
Node.js 的 MongoDB 客户端。
mongodb
Node.js 的官方 MongoDB 驱动程序。
Github:https://github.com/mongodb/node-mongodb-native
mongoose
Node.js环境下一款优秀的MongoDB对象建模工具。
Github:https://github.com/Automattic/mongoose
MySQL 客户端
MySQL 的 Node.js 驱动程序。
mysql
mysql 的 Node.js 驱动程序。它是用 JavaScript 编写的,不需要编译。
Github:https://github.com/mysqljs/mysql
mysql2
一个用于Node.js的MySQL数据库驱动程序。它是mysql模块的一种增强版,提供更高性能和更好的功能。
Github:https://github.com/sidorares/node-mysql2
对象关系映射 (ORM)
将 SQL 数据库表映射到 JavaScript 对象。
Prisma
Prisma 是一个开源数据库工具包。它包括用于 Node.js 的 JavaScript/TypeScript ORM、迁移和用于查看和编辑数据库中的数据的现代 GUI。
Github:https://github.com/prisma/prisma
Sequelize
Sequelize 是一个基于 Promise 的 Node.js ORM 工具,适用于 Postgres、MySQL、MariaDB、SQLite、Microsoft SQL Server、Amazon Redshift 和 Snowflake 的数据云。它具有可靠的事务支持、关系、急切和延迟加载、读取复制等功能。
Github:https://github.com/sequelize/sequelize
typeorm
适用于 TypeScript、ES7、ES6、ES5 的数据映射器 ORM。支持 MySQL、PostgreSQL、MariaDB、SQLite、MS SQL Server、Oracle、MongoDB 数据库。
Github:https://github.com/typeorm/typeorm
对象模式验证
使用对象模式进行简单直观的验证。
joi
一个用于JavaScript对象模式验证的库。
Github:https://github.com/hapijs/joi
zod
具有静态类型推断的 TypeScript-first 模式声明和验证库。
Github:https://github.com/colinhacks/zod
yup
非常简单的对象模式验证。
Github:https://github.com/jquense/yup
包发布
自动化包发布工作流程。
semantic-release
一个自动化版本发布工具,它遵循语义化版本规范,根据提交的代码变动自动生成适当的版本号,并发布到代码仓库。
Github:https://github.com/semantic-release/semantic-release
standard-version
一个基于语义化版本规范的版本管理工具。它帮助开发者自动化生成版本号和生成变更日志,以及标记代码库中的重大版本发布。
Github:https://github.com/conventional-changelog/standard-version
打包为可执行文件
将 Node.js 应用打包成单个可执行文件。
@vercel/ncc用于将 Node.js 模块打包成单个文件。它可以将项目中的多个模块打包成一个独立的 JavaScript 文件,方便在不需要依赖管理器或构建工具的环境中运行。
Github:https://github.com/vercel/ncc
pkg
一个命令行工具,用于将 JavaScript 代码打包成可执行的二进制文件。它提供了一种将 Node.js 应用程序打包为可独立运行的可执行文件的方法,无需依赖外部的 Node.js 安装。
Github:https://github.com/vercel/pkg
PDF 生成
使用 Node.js 生成 PDF 文件。
jspdf
一个使用 JavaScript 生成 PDF 文档的开源库。
Github:https://github.com/MrRio/jsPDF
pdfmake
一个用于在客户端中生成 PDF 文档的库。它提供了一种简单而强大的方式来创建具有丰富内容和样式的 PDF 文件。
Github:https://github.com/bpampuch/pdfmake
pdfkit
Node.js 的 PDF 生成库。
Github:https://github.com/foliojs/pdfkit
pdf-lib
使用 JavaScript 创建和修改 PDF 文件。
Github:https://github.com/Hopding/pdf-lib
PostgreSQL 客户端
从 Node.js 与 PostgreSQL 数据库交互。
pg
PostgreSQL 客户端 - 具有相同 API 的纯 javascript 和 libpq。
Github:https://github.com/brianc/node-postgres
查询生成
编写 JavaScript 来构建 SQL 查询。
knex
一个以 JavaScript 编写的 SQL 查询构建器,用于 Node.js 和浏览器环境中与数据库进行交互。它提供了一套简洁而强大的 API,使开发者能够以更直观的方式构建和执行 SQL 查询。
Github:https://github.com/knex/knex
Redis 客户端
Node.js 的 Redis 客户端。
ioredis
适用于 Node.js 的强大、注重性能且功能齐全的 Redis 客户端。
Github:https://github.com/luin/ioredis
redis
现代、高性能 Redis 客户端。
Github:https://github.com/redis/node-redis
调度
按计划运行任务。
cron
一个用于执行定期任务的时间调度工具。它是基于时间的作业调度器,可以按照指定的时间规则自动执行预定的任务。
Github:https://github.com/kelektiv/node-cron
node-schedule
一个用于在 Node.js 中执行定时任务的模块。它提供了一种简单而灵活的方式来安排和管理定时任务,可以根据指定的时间规则触发任务的执行。
Github:https://github.com/node-schedule/node-schedule
shell 执行
从 Node.js 执行 shell 命令。
execa一个用于在 Node.js 中执行外部命令的模块。
Github:https://github.com/sindresorhus/execa
shelljs
一个基于 Node.js 的轻量级模块,它提供了一组可在命令行中运行的 Shell 命令的封装和工具函数。ShellJS 的目标是让在 Node.js 环境中使用命令行操作变得更加简单和方便。
Github:https://github.com/shelljs/shelljs
SQLite客户端
SQLite 的 Node.js 驱动程序。
sqlite3
一个用于访问 SQLite 数据库的模块。SQLite 是一种嵌入式关系型数据库引擎,它以轻量级和高效性而闻名。sqlite3 模块允许您在 Node.js 应用程序中使用 JavaScript 来执行与 SQLite 数据库的交互操作。
Github:https://github.com/TryGhost/node-sqlite3
better-sqlite3
一个在 Node.js 中使用的 SQLite3 数据库封装模块。它提供了一个简洁、易用和高性能的接口,让开发者可以方便地在 Node.js 应用程序中与 SQLite 数据库交互。
Github:https://github.com/WiseLibs/better-sqlite3
静态服务器
在 localhost 上提供静态生成的站点。
http-server
一个简单的命令行工具,用于在您的本地开发环境中快速启动一个基于 HTTP 的静态文件服务器。它允许您将当前目录下的文件作为静态资源托管,并通过 HTTP 协议提供这些文件。
Github:https://github.com/http-party/http-server
serve
一个用于在本地开发环境中快速启动静态文件服务器的命令行工具。它是由 Vercel 开发的,旨在提供一个简单、轻量级且易于使用的方式来运行静态网站或应用程序。
Github:https://github.com/vercel/serve
模板引擎
渲染动态 HTML 输出。
ejs
一种简单而灵活的模板引擎,用于在Node.js和浏览器中生成动态HTML页面。它允许您在你的HTML模板中嵌入JavaScript代码,以动态地生成内容。
Github:https://github.com/mde/ejs
handlebars
一个简单、高效的模板引擎,用于在 Web 应用程序中生成动态的 HTML 页面。它基于 Mustache 模板语法,并扩展了一些功能。
Github:https://github.com/handlebars-lang/handlebars.js
测试框架
帮助编写自动化测试的框架。
jest
一个用于 JavaScript 测试的现代化、开源的测试框架。它被广泛应用于前端开发和 Node.js 环境中,旨在提供简单、高效和可扩展的测试解决方案。
Github:https://github.com/facebook/jest
mocha
一个灵活且功能强大的 JavaScript 测试框架。它适用于前端和后端的 JavaScript 应用程序,可用于编写各种类型的测试,包括单元测试、集成测试和端到端测试等。
Github:https://github.com/mochajs/mocha
Web 认证
处理 Web 应用的用户身份验证。
express-session
一个用于处理会话管理的 Node.js 中间件。它基于 Express 框架,提供了简单且易于使用的会话管理解决方案。
Github:https://github.com/expressjs/session
passport
一个用于身份验证的 Node.js 中间件。它提供了一种简单且灵活的方式来实现用户认证功能。
Github:https://github.com/jaredhanson/passport
Web 抓取框架
使用 Node.js 爬取和抓取整个网站。
crawlee
适用于 JavaScript/Node.js 的可扩展网络爬取库。支持使用无头 Chrome 和 Puppeteer 开发数据提取和 Web 自动化作业。
Github:https://github.com/apify/crawlee