2020年最推荐、最有用NodeJS库

Express

快速,简单,极简的节点Web框架


cheerio

Cheerio解析标记(例如HTML),并提供用于遍历/操纵结果数据结构的API

const cheerio = require(\’cheerio\’);

const $ = cheerio.load(\’

\’);


 nodemailer

从Node.js发送电子邮件

const nodemailer = require("nodemailer");
let testAccount = await nodemailer.createTestAccount();
let transporter = nodemailer.createTransport({
  host: "smtp.ethereal.email",
  port: 587,
  secure: false,
  auth: {
    user: testAccount.user, 
    pass: testAccount.pass
 }
});
let info = await transporter.sendMail({
  from: \'"Fred Foo " <foo@example.com>\',
  to: "bar@example.com, baz@example.com",
  subject: "Hello ✔", 
  text: "Hello world?",
  html: "Hello world?"
});

socket.io

Socket.IO支持基于事件的实时双向通信
const server = require(\'http\').createServer();
const io = require(\'socket.io\')(server);
io.on(\'connection\', client => {
  client.on(\'event\', data => { ... });
  client.on(\'disconnect\', () => { ... });
});
server.listen(3000);

好处

· 实施实时分析,二进制流,实例消息传递和文档协作

· 知名用户包括Microsoft Office,Yammer和Zendesk


Multer

地址:https://www.npmjs.com/package/multer

Multer是一个Node.js中间件,用于处理 multipart/form-data 类型的表单数据,主要用于文件上传。

 


Moment

地址:https://www.npmjs.com/package/moment

一个轻量级的JavaScript日期库,用于解析,验证,操作和格式化日期。

 


 lodash

地址:https://www.npmjs.com/package/lodash

Lodash 减少数组、数字、对象、字符串等工作的麻烦,它让 JS 变得更容易。

 


 chalk

地址:https://www.npmjs.com/package/chalk

chal 可译为“粉笔”,node 终端样式库,主要功能为使输出不再单调,添加文字背景,改变字体颜色

 


 chalk

地址:https://www.npmjs.com/package/chalk

chal 可译为“粉笔”,node 终端样式库,主要功能为使输出不再单调,添加文字背景,改变字体颜色

 


 validator

地址:https://www.npmjs.com/package/validator

轻量,快捷,易扩展的前端的验证工具,无其他包依赖无样式,可以适合绝大部分使用情景,开发人员可根据项目环境自行组装反馈的错误信息给用户。

 

 JSDoc

地址:https://www.npmjs.com/package/jsdoc

JSDoc是一个根据javascript文件中注释信息,生成JavaScript应用程序或库、模块的API文档 的工具。

 

 Helmet

地址:https://www.npmjs.com/package/helmet

Helmet是一系列帮助增强Node.JS之Express/Connect等Javascript Web应用安全的中间件。

一些著名的对Web攻击有XSS跨站脚本, 脚本注入 clickjacking 以及各种非安全的请求等对Node.js的Web应用构成各种威胁,使用Helmet能帮助你的应用避免这些攻击。

 

 Crypto-js

地址:https://www.npmjs.com/package/crypto-js

CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。

 

forever 

可能是确保给定 node 脚本连续运行的最常用工具。遇到任何意外故障时,可以使你的 Node.js 流程保持在生产中。

 

bluebird 

功能全面的 Promises / A + 实现,具有出色的性能

Faker

在浏览器和node.js中生成大量假数据
var faker = require(\'faker\');
var randomName = faker.name.findName(); // Rowan Nikolaus
var randomEmail = faker.internet.email(); // Kassandra@erich.biz
var randomCard = faker.helpers.createCard(); // random contact card

好处

· 在API后端构建尚未完成的情况下构建前端UI并与数据进行交互

· 多种API方法,包括地址,公司,数据库,图像,名称(firstName,lastName)


morgan

Node.js的HTTP请求记录器中间件

例如GET / 200 51.267 ms — 1539

morgan
(\':method :url :status :res[content-length] - :response-time ms\')
---
var express = require(\'express\')
var morgan = require(\'morgan\')
var app = express()
app.use(morgan(\'combined\'))
app.get(\'/\', function (req, res) {
res.send(\'hello, world!\')
})

好处

· 将请求记录在控制台,文件,数据库中

· 调试和日志历史记录


http-errors

为Express,Koa,Connect等创建HTTP错误。
app.use(function (req, res, next) {
 if (!req.user) 
   return next(createError(401, \'Please login to view this page.\'))
  next()
})

好处

· 易于发送错误响应

· 许多错误属性可用

expose
headers
message
status
statusCode


body-parser

Node.js主体解析中间件

在处理程序之前在中间件中解析传入的请求主体,该处理程序在req.body属性下可用

var express = require(\'express\')
var bodyParser = require(\'body-parser\')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())

好处

· 解释请求正文

· 许多选项,例如inflate,type,verify


sequelize

Sequelize是用于Postgres,MySQL,MariaDB,SQLite和Microsoft SQL Server的基于承诺的Node.js ORM

它具有可靠的事务支持,关系,急切和延迟加载,读取复制等功能

const sequelize = new Sequelize
  (\'database\', \'username\', \'password\', 
    {
   host: \'localhost\',
   dialect: /* one of \'mysql\' 
     | \'mariadb\' | \'postgres\' | \'mssql\' */ });

好处

· Node.js ORM


passport

Passport是Node.js的Express兼容身份验证中间件

Passport的唯一目的是对请求进行身份验证,它通过一组称为策略的可扩展插件来完成

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null,  
          false); }
      return done(null, user);
     });
   }
));

好处

· Node.js身份验证

· 与OAuth和OpenID集成(Facebook,Twitter等…登录)


Dotenv

Dotenv是一个零依赖模块,可将环境变量从.env文件加载到process.env中

将配置与代码分开存储在环境中

require(\'dotenv\').config()
const db = require(\'db\')
db.connect({
host: process.env.DB_HOST,
username: process.env.DB_USER,
password: process.env.DB_PASS
})
// .env file
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3

好处

· 加载环境变量,例如AWS,sql用户名,部署,连接到其他工具所需的密码

· 将配置与代码分开存储在环境中


multer

Multer是用于处理multipart / form-data的node.js中间件,主要用于上传文件
var express = require(\'express\')
var multer  = require(\'multer\')
var upload = multer({ dest: \'uploads/\' })
var app = express()
app.post(\'/profile\', 
  upload.single(\'avatar\'), function (req, res, next) {
  // req.file is the `avatar` file
  // req.body will hold the text fields, if there were any
  })
app.post(\'/photos/upload\', 
  upload.array(\'photos\', 12), function (req, res, next) {
  // req.files is array of `photos` files
  // req.body will contain the text fields, if there were any
})

好处

· 易于上传多部分/表单数据文件


axios

基于Promise的HTTP客户端,用于浏览器和node.js
const axios = require(\'axios\');
// Make a request for a user with a given ID
axios.get(\'/user?ID=12345\')
  .then(function (response) {
  // handle success
  console.log(response);
  })
  .catch(function (error) {
  // handle error
  console.log(error);
  })
  .finally(function () {
  // always executed
  });

好处

· 从node.js发出HTTP请求

· 从浏览器发出XMLHttpRequests

· 支持Promise API


CORS

CORS是用于提供Connect / Express中间件的node.js程序包,可用于启用具有各种选项的CORS
var express = require(\'express\')
var cors = require(\'cors\')
var app = express()
app.use(cors())
app.get(\'/products/:id\', function (req, res, next) {
res.json({msg: \'This is CORS-enabled for all origins!\'})
})
app.listen(80, function () {
console.log(\'CORS-enabled web server listening on port 80\')
})

好处

· 轻松处理CORS问题

posted @ 2020-08-27 11:36  believe66  阅读(2143)  评论(0编辑  收藏  举报