常用模块包
About 5 min
常用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)
}
参考资料:
crypto地址:https://www.npmjs.com/package/bcrypt
crypto.js地址:https://www.npmjs.com/package/crypto.js
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)
参考资料: