知道这10个npm工具包,开发效率提高好几倍!第2个大家都用过!

有了 npm 之后,前端人员真的是过上好日子了。我们可以直接把别人写好的工具包拿来用,非常的方便。

1. day.js - 轻量日期处理

bash 复制代码
npm install dayjs
javascript 复制代码
import dayjs from 'dayjs';

// 日期格式化
console.log(dayjs().format('YYYY-MM-DD HH:mm:ss')); // 2025-06-18 18:30:15

// 日期计算
const nextWeek = dayjs().add(7, 'day').format('dddd');
console.log(`下周今天是: ${nextWeek}`); // 下周今天是: 星期三

// 相对时间
console.log(dayjs('2025-06-10').fromNow()); // 8天前

2. lodash - 实用工具库

bash 复制代码
npm install lodash
javascript 复制代码
import _ from 'lodash';

// 安全获取嵌套属性
const user = { info: { address: { city: null } } };
console.log(_.get(user, 'info.address.city', '杭州')); // 杭州

// 数组去重
console.log(_.uniq([2, 1, 2, 3, 1])); // [2, 1, 3]

// 函数防抖
const resizeHandler = _.debounce(() => {
  console.log('窗口停止调整大小');
}, 300);
window.addEventListener('resize', resizeHandler);

3. jsonwebtoken - 身份认证

bash 复制代码
npm install jsonwebtoken
javascript 复制代码
import jwt from 'jsonwebtoken';

// 生成token
const token = jwt.sign(
  { userId: '1111', role: 'admin' },
  'YOUR_SECRET_KEY',
  { expiresIn: '2h' }
);

// 验证token
jwt.verify(token, 'YOUR_SECRET_KEY', (err, decoded) => {
  if (err) return console.error('验证失败');
  console.log(decoded); // { userId: '1111', role: 'admin', iat: ..., exp: ... }
});

4. uuid - 唯一标识符

bash 复制代码
npm install uuid
javascript 复制代码
import { v4 as uuidv4 } from 'uuid';

// 生成唯一ID
const sessionId = uuidv4();
console.log(`会话ID: ${sessionId}`); // 会话ID: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

// 前端缓存标识
localStorage.setItem('deviceId', uuidv4());

5. validator - 数据验证

bash 复制代码
npm install validator
javascript 复制代码
import validator from 'validator';

// 表单验证
const email = '[email protected]';
console.log(validator.isEmail(email)); // true
console.log(validator.isMobilePhone('13800138000', 'zh-CN')); // true

// XSS防护
const userInput = '<script>alert(1)</script>';
console.log(validator.escape(userInput)); // &lt;script&gt;alert(1)&lt;/script&gt;

6. qs - 查询参数处理

bash 复制代码
npm install qs
javascript 复制代码
import qs from 'qs';

// 对象转查询字符串
const params = { category: 'tech', page: 2, tags: ['js', 'node'] };
console.log(qs.stringify(params)); // category=tech&page=2&tags[0]=js&tags[1]=node

// 解析URL参数
const url = '?name=Zhifou&skills=react&skills=vue';
console.log(qs.parse(url.substring(1))); // { name: 'Zhifou', skills: ['react', 'vue'] }

7. date-fns - 日期函数库

bash 复制代码
npm install date-fns
javascript 复制代码
import { format, addMonths, differenceInDays } from 'date-fns';

// 多语言日期格式化
console.log(format(new Date(), 'yyyy年MM月dd日')); // 2025年06月18日

// 日期计算
const nextMonth = addMonths(new Date(), 1);
console.log(`下个月日期: ${format(nextMonth, 'yyyy-MM-dd')}`);

// 日期差值
const start = new Date(2025, 5, 1);
console.log(`距离今天还有: ${differenceInDays(start, new Date())}天`);

8. bcrypt.js - 密码加密

bash 复制代码
npm install bcryptjs
javascript 复制代码
import bcrypt from 'bcryptjs';

// 密码加密
const hashPassword = async (plainText) => {
  const salt = await bcrypt.genSalt(10);
  return bcrypt.hash(plainText, salt);
};

// 密码验证
const verifyPassword = async (plainText, hash) => {
  return bcrypt.compare(plainText, hash);
};

// 使用示例
(async () => {
  const hash = await hashPassword('mypassword123');
  console.log(await verifyPassword('mypassword123', hash)); // true
})();

9. sharp - 图像处理

bash 复制代码
npm install sharp
javascript 复制代码
const sharp = require('sharp');

// 图片压缩
sharp('input.jpg')
  .resize(800)  // 限制宽度
  .jpeg({ quality: 80 }) // 质量压缩
  .toFile('output.jpg');

// 生成缩略图
sharp('original.png')
  .resize(200, 200)
  .toFile('thumbnail.png');

10. ramda - 函数式编程

bash 复制代码
npm install ramda
javascript 复制代码
import R from 'ramda';

// 数据转换
const users = [
  { id: 1, name: 'John', age: 25 },
  { id: 2, name: 'Sarah', age: 30 }
];

// 获取30岁以下用户名字
const names = R.compose(
  R.map(R.prop('name')),
  R.filter(R.lt(R.__, 30))
)(users);

console.log(names); // ['John']

个人建议:

  1. 日期处理:day.js (轻量级日期处理) / date-fns (功能全面的日期处理)
  2. 工具库:lodash (主流) / ramda (函数式)
  3. 安全相关:bcrypt (加密工具) + jsonwebtoken (token认证)
  4. 数据处理:qs (参数处理) + validator (验证)
相关推荐
大明者省1 小时前
AI 在课程思政的 10 大应用:从资源挖掘到效果升华
前端·人工智能·easyui
希希不嘻嘻~傻希希6 小时前
CSS 字体与文本样式笔记
开发语言·前端·javascript·css·ecmascript
石小石Orz7 小时前
分享10个吊炸天的油猴脚本,2025最新!
前端
爷_7 小时前
Nest.js 最佳实践:异步上下文(Context)实现自动填充
前端·javascript·后端
爱上妖精的尾巴8 小时前
3-19 WPS JS宏调用工作表函数(JS 宏与工作表函数双剑合壁)学习笔记
服务器·前端·javascript·wps·js宏·jsa
草履虫建模8 小时前
Web开发全栈流程 - Spring boot +Vue 前后端分离
java·前端·vue.js·spring boot·阿里云·elementui·mybatis
—Qeyser8 小时前
让 Deepseek 写电器电费计算器(html版本)
前端·javascript·css·html·deepseek
UI设计和前端开发从业者8 小时前
从UI前端到数字孪生:构建数据驱动的智能生态系统
前端·ui
Junerver9 小时前
Kotlin 2.1.0的新改进带来哪些改变
前端·kotlin