每个开发人员都应该知道的 13 个 Nodejs 库
本文翻译自 Node.js Power Tools: 13 Libraries Every Developer Should Know,作者:Pinjari Rehan, 略有删改。
Node.js 被视为许多 Web 开发人员的理想运行时环境。它是世界上最流行的编程语言之一,Node.js 提供了通过 JavaScript 库重用代码的能力,但是在项目中选择合适的库可能很困难。
有用的库可以缩短开发时间,并为您的 Web 应用程序提供几个优点,例如更快的加载时间和减少应用程序包的大小。在选择库时,要考虑应用程序的复杂性、支持库的社区、更新的频率以及文档的质量。
Node.js 库通过 Node.js 包管理器 npm 进行维护,npm 可以帮助安装各种开源库。下文选择了 13 个不错的 Node.js 库,它们使 Web 开发变得更简单,希望对你有帮助。
什么是 Node.js?
Node.js 是一个开源的服务器端运行时环境,用于 JavaScript 编程。它的异步特性和跨平台互操作性使其成为流行的 Web 开发基础。Node.js 使用事件驱动和非阻塞 I/O,使其在处理大量数据的实时分布式系统中非常高效。
什么是 Node.js 库?
库,有时称为模块,是预先编写的代码,封装了经常使用的操作。
你可以利用库来加速编码过程,并鼓励代码重用,这将有助于你保持你的工作“DRY”(不要重复自己)。
框架通常作为整个程序的骨架,与框架相反,库是完成的功能,可以在项目的任何开发阶段轻松使用。
推荐的 13 个 Node.js 库
让我们来看看这 13 个 Node.js 库,看看它们能提供什么功能让我们的 Web 开发更简单。
1. Sequelize
Sequelize 是一个基于 promise 的 Node.js 对象关系映射器(ORM),它使开发人员更容易使用关系数据库。支持 PostgreSQL,MySQL,MariaDB,SQLite 和更多数据库。
Sequelize 使用 JavaScript 对象对数据库表的结构进行建模,并连接到常用的关系数据库以查询和更改数据。它解析检索到的数据并将其作为 JavaScript 对象返回。
功能和优点
连接到数据库并执行操作,而无需编写原始 SQL 查询
减少 SQL 注入漏洞和 SQL 注入攻击
与 GraphQL 兼容
2. CORS
CORS 是一个 Node.js 包,它使用 Connect/Express 作为中间件提供跨域资源共享(CORS)。
CORS 包装了 Node.js 路由中间件,允许程序从其自身域以外的域访问资源。它接受多个参数来指定跨域选项,如 origin、header 等。
功能和优点
减少了在 Web 应用程序中启用 CORS 所需的代码量。
允许您指定允许列出的域,并允许用户为某些来源启用 CORS,同时禁止其他来源。
提供流畅的错误处理,帮助开发人员分析可疑来源的安全风险。
3. Nodemailer
Nodemailer 简化了从 Node.js 服务器发送的电子邮件。
它使用一个传输对象,该对象基于简单邮件传输协议(SMTP)以及其他支持传输。创建消息时,此传输对象接受 from、to、subject、body 和其他参数作为输入。
功能和优点
SMTP、Amazon Simple Email Service(SES)、Sendmail 和 Stream 都由单个模块支持。
支持电子邮件正文中的文本和 HTML
设置传递状态通知并允许批量电子邮件传递。
4. passport
Passport 是一个模块化的 Node.js 身份验证中间件。
Passport 支持超过 500 种身份验证方案,包括 Google、Facebook、Twitter 和其他自定义和单点登录(SSO)提供商。
普通用户名和密码登录、通过 OAuth 进行的社交网站委托身份验证以及用于联合身份验证的 OpenID 都是可选的。
功能和优点
使用最少的编码,为社交网站提供内置 SSO 身份验证
为多个会话设置永久登录信息。
通过使用 Express 和 Connect 中间件的无障碍配置,可以避免在应用程序中安装额外的路由。
5. Async
Async 是一个强大的 Node.js 实用工具模块,可帮助开发人员使用 JavaScript "async"或接受回调的方法来处理异步 JavaScript。
当您为 Async 模块提供一个回调数组时,它会运行并包装它们传递 promise。
功能和优点
提供超过 70 种实用方法,可轻松开发异步控制流。
提供一种“并行”方法来处理对主机的大量请求(否则需要大量代码才能实现)。
帮助结束 JavaScript 中嵌套的“回调地狱”。
6. Winston
Winston 是 Node.js 的日志包,允许在许多传输上进行通用日志记录。
这些传输器根据您的应用程序的要求存储和自定义日志。除了默认值外,createLogger
方法还允许您创建使用可用传输选项(包括控制台、文件和数据库)的自定义日志记录器。
功能和优点
从单个配置文件控制日志记录。
允许您自定义日志格式,例如以 JSON 或文本格式保存日志。
提供可调整的日志记录级别,您可以根据应用程序的要求进行自定义。
7. Mongoose
Mongoose 是一款基于 Node.js 的 MongoDB 对象建模工具,通常被称为对象数据建模(ODM)库,它提供了诸如钩子、模型验证、连接和查询等功能。
Mongoose 为应用程序数据提供了一个基于模式的解决方案,它在应用程序层强加了一个单一的模式,从而产生了一个 MongoDB 集合。
每个模式都与 Mongoose 模型耦合,该模型使您能够对 MongoDB 集合执行查询,例如获取,更新和删除数据。
功能和优点
提供简单的查询抽象,允许开发人员为 MongoDB 事务编写更少的代码。
内置的数据验证允许您定义可以在数据库中添加或更改的数据类型。
为 MongoDB 集合实现指定的结构,为开发人员提供 MongoDB 实例。
允许您通过将某些查询链接在一起来处理。
8. Socket.IO
Socket.IO 是一个 Node.js 通信包,它允许客户端浏览器和服务器进行真实的实时、双向和基于事件的通信。
它通过 HTTP 长轮询使用数字握手在服务器和客户端之间建立低级连接。一旦连接建立,客户端和服务器之间的通信将通过 TCP 实时进行。
功能和优点
使用 WebSocket 提供低开销的通信通道,并将 HTTP 长轮询作为备用方案。
可扩展,允许服务器简单地将事件广播到众多客户端。
支持命名空间多路复用,这可以减少服务器上的 TCP 连接和套接字端口的数量。
9. Lodash
Lodash 是一个 JavaScript 实用程序包,可帮助开发人员编写简单和可维护的代码。
它包括 200 多个实用函数,以帮助完成常见的编程任务,如类型检查,简单的数学运算等。
功能和优点
Polyfill 用于实现跨浏览器兼容性。
当处理对象数组时,它提供了内置的解决方案,如 filter、search 和 flatMap。
帮助开发人员避免冗余并维护干净的代码。
10. Axios
Axios 是一个基于 Node.js 和浏览器的基于 Promise 的 HTTP 客户端。
它还根据需要管理浏览器或 Node.js 请求和响应数据的转换。Axios 是同构的,这意味着它可以使用相同的代码库在服务器和客户端上运行。
Axios 在服务器端使用本机 HTTP 模块,在客户端使用 XMLHttpRequest 进行 HTTP 通信。
功能和优点
为典型的 HTTP 数据类型(如 GET、PUT、POST 和 POST)提供 API 方法。
通过在 Internet 上执行 HTTP 查询时防止跨站点请求伪造(CSRF)来提高安全性。
自动 JSON 数据转换可以轻松地将响应数据转换为 JSON。
11. puppeteer
Puppeteer 是一个 Node.js 框架,它允许您通过 DevTools 协议提供用于控制 Chrome/Chromium 的高级 API 来自动化 Chrome。
自动化前端测试,例如请求处理测试,识别和比较 UI 组件,以及性能测试等。开发人员可以通过将 Puppeteer 包导入他们的代码来构建 Chromium 实例。实例然后可以与浏览器引擎通信以完成自动化测试。
功能和优点
无需设置,配置简单,并且不需要任何额外的驱动程序。
抓取网站以生成预呈现的内容。
与 Jest 和 Mocha 等知名测试框架兼容
12. Multer
Multer 是一个 Node.js 中间件库。它基于 HTML 表单解析器 Busboy 构建,支持多部分和多形式数据。
初始化 Multer 实例后,它的一个参数是一个测试对象,它指定上传的文件将保存在服务器上的位置。Multer 将文件对象与上载请求一起发送,Multer API 将解析该文件对象并将其传输到目标站点。
功能和优点
通过内置的解析,它使原始 HTTP 请求数据更可用于存储。
允许您定义文件的编码类型,这为上传的文件提供了额外的保护。
过滤器,可以限制文件类型和大小上传的选择
13. Dotenv
Dotenv 是一个 Node.js 实用程序模块,用于维护应用程序环境变量并保护关键配置数据。
Dotenv 还帮助应用程序按照十二因素应用程序方法保存环境变量。在早期配置 dotenv 库时,.env
中的环境变量会立即注入 provess.env。
功能和优点
允许您将机密与源代码(如 API 密钥和登录凭据)隔离,并允许每个开发人员建立自己的.env 文件。
由于它的零依赖模块,它不会增加程序的大小。
最后
Node.js 中有许多有用的库,但为您的项目选择一个理想的库可能很难。本文中讨论的一些 Node.js 库可能会成为您未来应用程序的“必备”。例如,如果你使用 MongoDB 做了很多工作,Mongoose 可以成为你的救星。希望本文对你有帮助~
看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~
专注前端开发,分享前端相关技术干货,公众号:南城大前端(ID: nanchengfe)
版权声明: 本文为 InfoQ 作者【南城FE】的原创文章。
原文链接:【http://xie.infoq.cn/article/e7f8ff56eb99852e3011afe51】。文章转载请联系作者。
评论