likes
comments
collection
share

《高阶前端指北》之NodeJS大佬常用最新最全工具链

作者站长头像
站长
· 阅读数 21

NodeJS爬虫青春手册:

2022都快结束了,你还在用19年的类库吗?咱也不是为了求新,只是纯粹为了求新。Node>16.0的怎么可以不知道主流Node库呢?

很多之前用的库都过时了,老的脚手架拉出来以后总感觉不那么顺滑。翻阅了一下现在的几个流行库发现更新了很多好玩的。这里汇总整理一下,以便以后常用。

Playwright

Playwright 是一个用于 Web 测试和自动化的框架。它允许使用单个 API测试ChromiumFirefoxWebKit 。Playwright 旨在实现常绿强大可靠快速的跨浏览器 Web 自动化。

《高阶前端指北》之NodeJS大佬常用最新最全工具链

# Run from your project's root directory
npm init playwright@latest
# Or create a new project
npm init playwright@latest new-project
# 使用
npx playwright test

Nodemon

是一种工具,可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于 node.js 的应用程序。

《高阶前端指北》之NodeJS大佬常用最新最全工具链

# 默认监视当前目录的文件变化
$ nodemon app.js

# 指定主机和端口作为参数,表示在本地 3697 端口启动 node 服务 
$ nodemon app.js localhost 3697

Fastify

Fastify,快速并且低开销的 web 框架,专为 Node.js 平台量身打造。

《高阶前端指北》之NodeJS大佬常用最新最全工具链

使用

// ESM
import Fastify from 'fastify'
const fastify = Fastify({
  logger: true
})
// CommonJs
const fastify = require('fastify')({
  logger: true
})

fastify.get('/', async (request, reply) => {
  reply.type('application/json').code(200)
  return { hello: 'world' }
})

fastify.listen({ port: 3000 }, (err, address) => {
  if (err) throw err
  // Server is now listening on ${address}
})

Sharp

Node.js高性能图像处理,调整 JPEG、PNG、WebP、AVIF 和 TIFF 图像大小的最快模块。使用 libvips 库。 图像大小调整是基操,还提供旋转、提取、合成和伽马校正等操作。

《高阶前端指北》之NodeJS大佬常用最新最全工具链

比如将webp图片转为gif:

await sharp('animated.webp', { animated: true })
  .toFile('animated.gif');

高斯模糊

const gaussianBlurred = await sharp(input)
  .blur(5)
  .toBuffer();

node-fluent-ffmpeg

该库将 ffmpeg 的复杂命令行用法抽象为一个流畅、易于使用的 node.js 模块。为了能够使用这个模块,请确保您的系统上安装了ffmpeg(包括所有必要的编码库,如 libmp3lame 或 libx264)。

《高阶前端指北》之NodeJS大佬常用最新最全工具链

使用方式

const command = ffmpeg('/path/to/file.avi');
const command = ffmpeg(fs.createReadStream('/path/to/file.avi'));
const command = ffmpeg({ option: "value", ... });
const command = ffmpeg('/path/to/file.avi', { option: "value", ... });

Moment

JavaScript 日期处理类库,或者使用dayjs库

《高阶前端指北》之NodeJS大佬常用最新最全工具链

moment("20111031", "YYYYMMDD").fromNow(); // 11 年前 
moment("20120620", "YYYYMMDD").fromNow(); // 10 年前 
moment().startOf('day').fromNow(); // 18 小时前 
moment().endOf('day').fromNow(); // 6 小时内 
moment().startOf('hour').fromNow(); // 1 小时前

总结

其他我们比如requst,chalk等,我们已经在仓库中引入了,这里就不过多介绍了。以上这些库,本人均使用过,说实话很方便很快捷。就比如说去除图片水印,正常情况下你会搜索免费的,在线去除。其实使用上面的sharp,随后一个命令行就解决了。