跳至主要內容

常用模块包


常用NPM包

gm

使用前,先安装GraphicsMagick或者ImageMagick,支持图片处理,添加水印、裁剪...

const fs = require('node:fs')
const gm = require('gm')

// resize and remove EXIF profile data
gm('/path/to/my/img.jpg')
  .resize(240, 240)
  .noProfile()
  .write('/path/to/resize.png', (err) => {
    if (!err)
      console.log('done')
  })

实践:

参考资料:

moment

时间格式化

const moment = require('moment')
// 时间格式化
moment(XXXXXX).format('YYYY-MM-DD HH:mm:ss')

参考资料:

crypto || crypto.js

支持加密、哈希、指定长度随机字符串 等 【非常好用】

const crypto = require('crypto.js')
// a21cf00de4343af1b8b2087af07eb7b9
crypto.hmac('md5', '123456', 'sdfvkjfhd')

// hashMac算法
function hashMac(code, key) {
  return crypto.HmacSHA1(code, key).toString(crypto.enc.Base64)
}

参考资料:

path

内置模块。路径处理,在相对路径、绝对路劲的处理上,很有优势

// 路径拼接
path.join()

// 提供平台特定的路径片段分隔符
path.sep
// Windows 上是 \。
// POSIX 上是 /。

参考资料:

fs-extra

文件操作相关,基于fs模块封装

const fse = require('fs-extra')
// 遍历某个目录下所有文件【常用方案】
fse.readdirSync(path.join(_dirname), 'XXXX')
  .filter() // 文件过滤
  .forEach() // 遍历

参考资料:

qr-images

简单易用的二维码生成,模块qrcode也支持类似功能

const qr = require('qr-image')

const qr_svg = qr.image('I love QR!', { type: 'svg' })
qr_svg.pipe(require('node:fs').createWriteStream('i_love_qr.svg'))

const svg_string = qr.imageSync('I love QR!', { type: 'svg' })

参考资料:

lodash

Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。

// Load the full build.
const _ = require('lodash')

// 调用方法 提供了很多...

参考资料:

bluebird

bluebird是一个第三方Promise类库,相比其它第三方类库或标准对象来说,功能更齐全而不臃肿、浏览器兼容性更好!

在async/await之前使用频率非常高的npm包,直接将回调函数转化为promise对象【配合wechat项目学习】

const fs = require('node:fs')
const Promise = require('bluebird')
// 转化为async方法,原来是回调函数的形式
const readFileAsync = Promise.promisify(fs.readFile)

参考资料: