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