几个强力的nodejs库
nodejs被视为许多Web开发人员的理想运行时环境。
nodejs的设计是为了在运行时中使用JavaScript编写的代码,它是世界上最流行的编程语言之一,并允许广泛的开发者社区构建服务器端应用程序。
nodejs提供了通过JavaScript库重用代码的能力,但是选择合适的库可能很困难。
有用的库可以缩短开发时间,并为我们的Web应用程序提供一些优势,例如更快的负载时间和减少应用打包大小。
在选择库时,需要考虑应用程序的复杂性、支持库的社区、更新的频率及其文档的质量。本文就将介绍几个非常流程的库
Sequelize
Sequelize是一种基于Promise的nodejs对象关系映射器(ORM)的使用,使开发人员更容易使用关系数据库。
支持PostgreSQL、mysql、 MariaDB、SQLite等数据库。
使用javaScript对象对数据库表的结构进行序列化,并连接到受欢迎的关系数据库来查询和更改数据。然后它解析所检索到的数据,并将其作为javaScript对象返回。
特征和好处:
- 连接到数据库并执行操作而不编写原始的
SQL查询 - 减少
SQL注入漏洞和SQL注入攻击 - 兼容
GraphQL
CORS

CORS使用Connect/Express提供跨域来源资源共享(CORS)作为中间件。
CORS包封装了nodejs路由中间件,允许程序从自己的域以外的域访问资源。
它接受几个参数来指定跨域来源选项,如源、请求头等。
特点和好处:
- 减少在
Web应用程序中启用CORS所需的代码数量。 - 允许我们打开指定的域,并允许用户为某些来源启用
CORS,同时禁止其他来源。 - 提供平稳的错误处理,并协助开发人员分析可疑来源的安全风险。
Nodemailer
Nodemailer简化从nodejs服务器发送的电子邮件。
它使用一个传输对象,该对象除其他支持传输外,是基于简单的邮件传输协议。
优点和特点:
SMTP、亚马逊简单电子邮件服务(SES)、邮件和流都由一个模块提供支持。- 支持电子邮件正文中的
txt和HTML格式。 - 设置发送状态通知并允许大规模电子邮件发送。
passport
passport是一个nodejs的认证中间件模块。
passport支持超过500个认证方案,包括谷歌、Facebook、推特和其他定制和单登录(SSO)提供商。
通常的用户名和密码登录、通过OAuth对社交网站进行授权认证。
特点和好处:
- 使用最少编码,内置的社交网站
SSO认证 - 为许多会话设置永久登录信息。
- 通过使用
Express和Connect中间件的无障碍配置,可以避免在应用程序中安装额外的路由。
Async
Async是一个强有力的nodejs实用模块,它通过使用javascript中的async或回调接受方法,帮助开发人员使用异步javascript。
当我们向async模块提供一个回调数组,它会将结果包装在一个Promise进行返回。
特点和优势:
- 提供70多个实用方法,便于开发异步控制流.
- 提供了一种"并行"方法来处理向服务端提出的许多请求(否则需要大量代码才能实现)。
- 有助于结束
javascript中的嵌套"回调地狱"。
Winston

Winston是一个用于nodejs的日志包。
这些transporters 根据我们的应用程序的要求存储和定制日志。
特点和好处:
- 单个配置文件就可以配置控制器.
- 允许我们自定义日志格式,例如以
JSON或文本格式保存日志。 - 提供可调整的日志记录级别,也可以根据应用程序的需求定制。
Mongoose
Mongoose是基于JS的MongoDB数据库对象建模工具,通常被称为对象数据建模(ODM)库,它提供了挂钩、模型验证、连接和查询等功能。
Mongoose通过在应用程序层中添加单个模式来提供基于架构的应用程序数据解决方案,该架构将导致与MongoDB集合。
特色和好处:
- 提供简单的查询抽象,允许开发人员编写较少的
Mongodb事务代码。 - 内置数据验证允许我们定义可能在数据库中添加或更改的数据类型。
- 实现
MongoDB数据库集合的指定结构,向开发人员提供一个MongoDB数据库实例。 - 允许我们通过链接它们来处理一些查询。
Socket.IO
Socket.IO是一个nodejs通信包,允许客户端浏览器和服务器实时、双向和基于事件的通信。
它通过http在服务器和客户机之间建立低层次的连接。
一旦建立了连接,客户机和服务器的通信就会实时地发生在整个TCP上。
特色和好处:
- 使用网络接口提供一个低开销的通信通道,并以
http长选作为备用选择。 - 可伸缩性,允许服务器只向众多客户端播放事件。
- 支持名称空间复用,这减少了在服务器上的连接量和套接字端口。
Lodash
Lodash是一个实用javaScript程序包,帮助开发人员编写简单和可维护的代码。
它包括了200多个实用程序函数,以帮助处理常见的编程杂务,比如检查类型、简单的数学操作等等。
特点和优势:
- 使用
Polyfills用于实现跨浏览器兼容性。 - 当处理对象数组时,它提供内置的解决方案,如过滤器、搜索和平面映射。
- 帮助开发人员避免冗余和维护干净的代码。
Axios
Axios是一个基于Promise的http客户端。它还根据需要管理浏览器或nodejs请求和响应数据的转换。
Axios是同构的,这意味着它可以使用相同的代码在服务器和客户端上操作。
Axios在服务器端使用一个本地的HTTP模块,而在客户端使用XMLHttpRequest 优先进行http通信。
特点和优势:
- 为典型的
HTTP数据类型提供API方法,如get、post等。 - 在互联网上执行
http查询时,通过防止跨站点请求伪造(csrf)来提高安全性。 - 自动将数据转换成
JSON格式。
puppeteer
puppeteer是一个高级的nodejs框架,允许我们通过提供一个高级的API来控制Chrome/Chromium浏览器(通过DevTools协议)。
它自动化前端测试,如请求处理测试、标识和比较UI组件以及性能测试等。
开发人员可以通过将木偶包导入代码来构建一个Chrome实例。
然后,该实例可以与浏览器引擎通信,以实现自动化测试。
特点和优势:
- 没有设置,配置简单,不需要任何额外的驱动程序。
- 网站被爬来爬去产生预先发行的内容。
- 与众所周知的测试框架的兼容性
Multer

Multer是一个nodejs中间件库。它是建立在HTML表单解析器总线和支持multipart 和multiform 数据。
初始化实例后,它的参数之一是一个测试对象,它指定上传的文件将保存在服务器的哪里。
Multer提供了一个文件对象和上传请求,而Multer API解析并将其传输到目标站点。
特点和优势:
- 通过内置的解析,它使原始
http请求数据更易于存储。 - 允许定义文件的编码类型,这为上传的文件提供了额外的保护。
- 过滤器和可以限制文件类型和大小的上传选项。
Dotenv
Dotenv是一个维护应用程序环境变量和保护关键配置数据的nodejs实用模块。
当配置dotenv 时,环境变量立即注入process.env中。
特点和优势:
- 允许我们将机密与源代码分离,例如
API key和登录凭证,并允许每个开发人员建立自己的环境文件。 - 由于它的零依赖模块,它不会增加程序的大小。