nodejs 常用第三方库
https://www.jianshu.com/p/862e052d46a1
1)express模块WEB开发框架
npm install express
var express = require('express')
var app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
app.listen(3000)
2)multer 处理文件上传
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
3)formformidable 处理表单图片/文件上传和参数上传
var formidable = require('formidable'),
http = require('http'),
util = require('util');
http.createServer(function(req, res) {
if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
// parse a file upload
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files}));
});
return;
}
// show a file upload form
res.writeHead(200, {'content-type': 'text/html'});
res.end(
'<form action="/upload" enctype="multipart/form-data" method="post">'+
'<input type="text" name="title"><br>'+
'<input type="file" name="upload" multiple="multiple"><br>'+
'<input type="submit" value="Upload">'+
'</form>'
);
}).listen(8080);
4)node-xlsx 读取Excel文件信息后缀只能是xlsx
var nodeExcel = require('node-xlsx');
var result = nodeExcel.parse(path);
5)cookie-parser是express的中间件
主要保存cookie
res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })
文档在express中可查看
6)express-session也是express的中间件
主要保存用户session
7)crypto模块 主要用于加密
此模块是node自带模块无需npm安装
具体使用方法在node文档中
//md5加密
var crypto = require('crypto');
var hash = crypto.createHash('md5')
var result = hash.update(加密的字段).digest('hex')
8)node处理用户上传的图片例如裁剪,缩放什么的
1、下载一个软件 GraphicsMagick
2、下载gm模块 npm install gm
我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证。来保证用户输入的是否合规。那么是否有个库来帮我们来做这样的事情呢?
接下来就给大家介绍一个库---Joi
我总结了常用的一些方法,给大家分享出来,大家可以自行测试,好用才值得分享
第一部分 语法囊括与实例
// 通用类型登录
let paramSchema = Joi.object().keys({
// 3 - 30 个 数字、字符
username: Joi.string().alphanum().min(3).max(30).required(),
// 3 - 30 位 字母数字组合密码
password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/),
// string || number 都可以通过
access_token: [Joi.string(), Joi.number()],
// 生日限制
birthyear: Joi.number().integer().min(1900).max(2018),
// email 限制
email: Joi.string().email(),
// URI限制
website: Joi.string().uri({
scheme: [
'git',
/git\+https?/
]
}),
// ==== 允许为空/ 否认不允许为空 ====
search: Joi.string().allow(''),
// 验证枚举值,如果不传,默认为all
type: Joi.string().valid('disabled', 'normal', 'all').default('all'),
// 开始时间 会自动格式化
startTime: Joi.date().min('1-1-1974').max('now'),
// 结束时间 必须大于开始时间,小于2100
endTime: Joi.when(Joi.ref('startTime'), { is: Joi.date().required(), then: Joi.date().max('1-1-2100') }),
// 页码 限制最小值
page: Joi.number().integer().min(1).default(1),
pageSize: Joi.number().integer().default(8),
//
deleteWhenLtTen: Joi.number().integer().max(10).strip(),
// 数组中包含某个字段 && 数字
arrayString: Joi.array().items(
// 数组中必须包含 name1
Joi.string().label('name1').required(),
// 数组中必须包含 数字
Joi.number().required(),
// 数组中可以包含其他类型,如bool, 但是最终结果会==除掉【以上类型的以外字段】
Joi.any().strip()
),
// 数组对象, 如需其参考以上字段
arrayObject: Joi.array().items(
Joi.object().keys({
age: Joi.number().integer().max(200),
sex: Joi.boolean()
})
)
})
// with 中必须同时存在某些字段,故不可以填写一个参数
.with("username", "password")
// .without() 同理,不可以一个字段,不能同时存在
.without('a', 'b');
// 测试数据
const testData = {
Password: "12345678"
}
// 验证
/**
* 参数校验
* @param {Object} checkInfo 要校验的对象
* @param {Object} schema 参数校验
* @param {Object} option 可选项
* @param {Boolean} option.abortEarly: 设置 true,可以在检测到第一个错误时立即返回,默认 false(检查全部)。推荐设置 true
* @param {Boolean} option.convert:设置 true,可以尝试将值转换为所需的类型(例如,将字符串转换为数字)。默认为 true。推荐采用默认
* @param {Boolean} option.allowUnknown: 默认 false,则允许对象包含被忽略的未知键。默认为 false。推荐设置 true
* @param {Boolean} option.skipFunctions:如果为 true,则忽略具有函数值的未知键。默认为 false。推荐采用默认
* @param {Boolean} option.stripUnknown: 默认为 false,从对象和数组中删除未知的元素。默认为 false。也可以特殊的设置成 { objects: true , arrays: true }的形式,可以对象和数组分别处理。推荐采用默认
* @param {String} option.presence: 设置默认的可选需求。支持的模式:’optional’,’required’,和 ’forbidden’。默认为 ’optional’。推荐采用默认
* @param {Boolean} option.escapeHtml: 当为 true时,出于安全目的,错误消息模板将特殊字符转义为html实体。默认为 false。推荐采用默认
* @param {Boolean} option.noDefaults:如果为 true,则不应用默认值。默认为 false。推荐采用默认
*/
const option = {
allowUnknown: true,
abortEarly: true,
}
let value = Joi.validate(testData, paramSchema, option);
console.log(value);
if (value.error) {
throw error;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下