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

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; } 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM