前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node.js开发人员都应该知道的12个有用的包

Node.js开发人员都应该知道的12个有用的包

作者头像
深度学习与Python
发布2020-09-28 10:31:45
1.8K0
发布2020-09-28 10:31:45
举报

作者 | Indrek Lasn

译者 | 王强

策划 | 李俊辰

推荐一些帮助你提升日常生产力的 Node 包。

Node.js 非常适合代码重用,而重用代码的基础就是 NPM 软件包。

NPM 包节省了我们大量的时间和精力。需要日期库吗?NPM 上有一个包。需要实用程序库吗?没问题,只需安装一个软件包即可。每当你需要解决某个代码问题时,很可能会发现 NPM 上已经有人根据你的需求量身定制了一个软件包。

本文列出了在我看来所有 Node.js 开发人员都应该知道的软件包列表。大家可以把将这些 NPM 包视为节省时间的好用工具和助力工作的魔法小精灵。

Husky

Husky 可以帮助我们简单直接地实现 git hooks。你们团队正在协作开发,并希望在整个团队中推行一套编码标准?没问题!有了 Husky,你就可以要求所有人在提交或推送到存储库之前自动完成 lint 并测试其代码。

husky——https://github.com/typicode/husky

如何安装

代码语言:javascript
复制
yarn add husky

用法

下面是一个实现 husky hooks 的示例:

代码语言:javascript
复制
// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "npm lint",
      "pre-push": "npm test"
    }
  }
}

这里 pre-commit 的 hooks 会在你提交到存储库之前运行。在将代码推送到存储库之前,将运行 pre-push hook。

Dotenv

Dotenv 是一个零依赖模块,可将环境变量从一个.env 文件加载到 process.env(https://nodejs.org/docs/latest/api/process.html#process_process_env)中。将配置与代码分开存储在环境中是基于“十二要素应用”方法(https://www.infoq.cn/article/sDXEcX8qtJX7DXvHcDYu)的行为。 Dotenv:https://github.com/motdotla/dotenv

如何安装

代码语言:javascript
复制
yarn add dotenv

用法

在你的应用程序尽早要求并配置 dotenv:

代码语言:javascript
复制
require('dotenv').config()

在项目的根目录中创建一个.env 文件。在新代码行上以 NAME=VALUE 的形式添加特定于环境的变量。例如:

代码语言:javascript
复制
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3

process.env 现在具有你在.env 文件中定义的键和值:

代码语言:javascript
复制
const db = require('db')
db.connect({
  host: process.env.DB_HOST,
  username: process.env.DB_USER,
  password: process.env.DB_PASS
})

Date-fns

Date-fns 就像 lodash,但前者是用于日期的。它包含许多实用程序函数,帮助开发人员更方便地处理日期。

date-fns 提供最全面、最简单且一致的工具集,用于在浏览器和 Node.js 中操作 JavaScript 日期。 date-fns:https://date-fns.org/

date-fns——https://github.com/date-fns/date-fns

如何安装

代码语言:javascript
复制
yarn add date-fns

用法

以下是 date-fns 库的入门示例:

代码语言:javascript
复制
import { compareAsc, format } from 'date-fns'
format(new Date(2014, 1, 11), 'yyyy-MM-dd')
//=> '2014-02-11'
const dates = [
  new Date(1995, 6, 2),
  new Date(1987, 1, 11),
  new Date(1989, 6, 10),
]
dates.sort(compareAsc)
//=> [
// Wed Feb 11 1987 00:00:00,
// Mon Jul 10 1989 00:00:00,
// Sun Jul 02 1995 00:00:00
// ]

查看文档以获取更多示例和用例。

https://date-fns.org/docs/

Bunyan

Bunyan 是 Node 下的一个易于掌握且性能卓越的 JSON 日志记录库。

bunyan——https://github.com/trentm/node-bunyan

如何安装

代码语言:javascript
复制
yarn add bunyan

提示:bunyan CLI 工具可以(在一定程度上)与所有版本的 Bunyan 日志兼容。因此,你可能希望使用 yarn add global bunyan 命令,以在你的 PATH 上获取 Bunyan CLI,然后使用本地 Bunyan 安装来在应用中使用 Bunyan 的 node.js 库。

用法

Bunyan 是用于 node.js 服务的简单快速的 JSON 日志记录库。

代码语言:javascript
复制
// hi.js
const bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});
log.info("hi");

如果你运行 node hi.js 命令,下面就是返回控制台的内容。

Ramda

Rambda 是一个面向 JavaScript 程序员的实用、函数式的实用程序库。Ramda 的卖点是纯正的函数式风格。

不变性和无副作用的函数是 Ramda 设计理念的核心。它可以帮助你使用简单而优雅的代码完成工作。

rambda——https://github.com/ramda/ramda

如何安装

代码语言:javascript
复制
$ yarn add ramda

用法

代码语言:javascript
复制
import * as R from 'ramda'
const greet = R.replace('{name}', R.__, 'Hello, {name}!');
greet('Alice'); //=> 'Hello, Alice!'

这里是上面的代码示例:

https://ramdajs.com/repl/?v=0.27.0#?const%20greet%20%3D%20R.replace%28%27%7Bname%7D%27%2C%20R.__%2C%20%27Hello%2C%20%7Bname%7D%21%27%29%3B%0Agreet%28%27Alice%27%29%3B%20%2F%2F%3D%3E%20%27Hello%2C%20Alice%21%27

Debug

Debug 是一个小型的 JavaScript 调试实用程序,它模仿了 Node.js 核心的调试技术。

debug—https://github.com/visionmedia/debug

如何安装

代码语言:javascript
复制
$ yarn add debug

用法

debug 公开了一个函数,只需将模块的名称传递给这个函数即可,它将返回经过修饰的 console.error 版本,以便你传递 debug 语句。

如何安装

代码语言:javascript
复制
yarn add debug

用法

代码语言:javascript
复制
const debug = require('debug');
const log = debug('http:server');
const http = require('http');
const name = 'My App name';
log('booting %o', name);
http.createServer((req, res) => {
  log(req.method + ' ' + req.url);
  res.end('debug examplen');
}).listen(3200, () => {
  log('listening');
});

// run this command in the terminal
// DEBUG=http:server node app.js

它允许你为模块的不同部分以及整个模块切换调试输出。

Flat

Flat 接收一个嵌套的 Javascript 对象并将其展平。你也可以使用分隔键逆展平对象。

flat——https://github.com/hughsk/flat

如何安装

代码语言:javascript
复制
$ yarn add flat

用法

代码语言:javascript
复制
const flatten = require('flat')
flatten({
    key1: {
        keyA: 'valueI'
    },
    key2: {
        keyB: 'valueII'
    },
    key3: { a: { b: { c: 2 } } }
})
// {
// 'key1.keyA': 'valueI',
// 'key2.keyB': 'valueII',
// 'key3.a.b.c': 2
// }

JSON5

JSON5 数据交换格式(JSON5)是 JSON 的超集,旨在通过扩展 JSON 语法,加入 ECMAScript 5.1 的某些特性来突破 JSON 的一些限制。 JSON5:https://json5.org/

json5——https://github.com/json5/json5 如何安装

代码语言:javascript
复制
yarn add json5
const JSON5 = require('json5')

用法

注意文件扩展名。JSON5 是 JSON 的扩展和超集。

代码语言:javascript
复制
{
  // comments
  unquoted: 'and you can quote me on that',
  singleQuotes: 'I can use "double quotes" here',
  lineBreaks: "Look, Mom! \
No \\n's!",
  hexadecimal: 0xdecaf,
  leadingDecimalPoint: .8675309, andTrailing: 8675309.,
  positiveSign: +1,
  trailingComma: 'in objects', andIn: ['arrays',],
  "backwardsCompatible": "with JSON",
}

ESLint

ESLint 是一个很好用的工具,可用来避免代码错误并强制开发团队使用编码标准。ESLint 是用于识别和报告 ECMAScript/JavaScript 代码中模式的工具。

ESLint——https://github.com/eslint/eslint

安装和使用

代码语言:javascript
复制
$ yarn add eslint

然后,你应该设置一个配置文件:

代码语言:javascript
复制
$ ./node_modules/.bin/eslint --init

之后,你可以在任何文件或目录上运行 ESLint,如下所示:

代码语言:javascript
复制
$ ./node_modules/.bin/eslint yourfile.js

有关更多说明,请参阅官方文档,其中有许多入门和配置示例。

https://eslint.org/

PM2

PM2 是一个具有内置负载均衡器的 Node.js 应用程序的生产流程管理器。有了它,你就可以让应用程序永远保持活跃,可以在不停机的前提下重新加载它们,并简化常见的系统管理任务。

pm2——https://github.com/Unitech/pm2

如何安装

代码语言:javascript
复制
$ yarn add global pm2

启动一个应用程序

你可以像这样启动任何应用程序(Node.js、Python、Ruby、$PATH 中的二进制文件……):

代码语言:javascript
复制
$ pm2 start app.js

现在,你的应用将被守护、监控并永远保持活跃。有关流程管理的更多信息见此:

https://pm2.keymetrics.io/docs/usage/quick-start/

管理应用程序

应用程序启动后,你就可以轻松管理它们。可以通过以下方法列出所有正在运行的应用程序:

代码语言:javascript
复制
$ pm2 ls

查阅官方文档,以获取特性和可能性的完整列表。

https://pm2.io/

Helmet

Helmet 库可通过设置各种 HTTP 标头来帮助你保护 Express 应用的安全。“这不是什么银弹,但可以帮上忙!”

Helmet——https://github.com/helmetjs/helmet

如何安装

代码语言:javascript
复制
yarn add helmet

用法

Helmet 是 Connect 风格的中间件,它与 Express 等框架兼容。(如果你需要对 Koa 的支持,就用 koa- helmet。)

代码语言:javascript
复制
const express = require("express");
const helmet = require("helmet");
const app = express();
app.use(helmet());

顶级 helemt 函数打包了 11 种较小的中间件。也就是说下面两件事是等效的:

代码语言:javascript
复制
// This...
app.use(helmet());
// ...is equivalent to this:
app.use(helmet.contentSecurityPolicy());
app.use(helmet.dnsPrefetchControl());
app.use(helmet.expectCt());
app.use(helmet.frameguard());
app.use(helmet.hidePoweredBy());
app.use(helmet.hsts());
app.use(helmet.ieNoOpen());
app.use(helmet.noSniff());
app.use(helmet.permittedCrossDomainPolicies());
app.use(helmet.referrerPolicy());
app.use(helmet.xssFilter());

Compression

Compression 库是一个 Node.js 压缩中间件。

Compression——https://github.com/expressjs/compression

如何安装

代码语言:javascript
复制
$ yarn add compression

用法

这个模块与 Express 或 Connect 搭配使用时,只需使用 Express 中间件调用压缩即可。通过中间件的请求将被压缩。

代码语言:javascript
复制
const compression = require('compression')
const express = require('express')
const app = express()
// compress all responses
app.use(compression())
// ...

参考阅读:

https://medium.com/better-programming/12-useful-packages-every-node-js-developer-should-know-2746db760e

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档