写点什么

每个开发人员都应该知道的 13 个 Nodejs 库

作者:南城FE
  • 2024-01-23
    广东
  • 本文字数:3357 字

    阅读完需:约 11 分钟

本文翻译自 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)

发布于: 刚刚阅读数: 3
用户头像

南城FE

关注

公众号@南城大前端 2019-02-12 加入

专注前端开发,分享前端知识

评论

发布
暂无评论
每个开发人员都应该知道的13个Nodejs库_JavaScript_南城FE_InfoQ写作社区