目錄
node常用第三方模塊
dateformat
時間格式化模塊
安裝:npm install dateformat
使用格式:dateFormat(時間戳,格式)
例如:
dateFormat(Date.now(),'yyyy-mm-dd') //返回2020-3-20
第三方模塊 router
功能:實現路由
使用步驟:
-
獲取路由對象
-
調用路由對象提供的方法創建路由
-
啟用路由,使路由生效
const getRouter = require('router')
const router = getRouter();
router.get('/add', (req, res) => {
res.end('Hello World!')
})
server.on('request', (req, res) => {
router(req, res, () => {})
})
說明:第三個回調函數必須寫,否則報錯,處理完請求會調用
第三方模塊 serve-static
功能:實現靜態資源訪問服務
步驟:
1.引入serve-static模塊獲取創建靜態資源服務功能的方法
2.調用方法創建靜態資源服務並指定靜態資源服務目錄
3.啟用靜態資源服務功能
const serveStatic = require('serve-static')
const serve = serveStatic('public')
server.on('request', () => {
serve(req, res, () => {})
})
server.listen(3000)
說明:第三個回調函數必須寫,否則報錯,處理完請求會調用
密碼加密 bcrypt
哈希加密是單程加密方式:1234 => abcd
在加密的密碼中加入隨機字符串可以增加密碼被破解的難度。
// 導入bcrypt模塊
const bcrypt = require('bcrypt');
// 生成隨機字符串 gen => generate 生成 salt 鹽
let salt = await bcrypt.genSalt(10);
// 使用隨機字符串對密碼進行加密
let pass = await bcrypt.hash('明文密碼', salt);
// 密碼比對
let isEqual = await bcrypt.compare('明文密碼', '加密密碼');
genSalt方法接收一個數值作為參數
數值越大生成的隨機字符串復雜度越高
數值越小生成的隨機字符串復雜度越低
默認值是10
bcrypt依賴的其他環境
-
python 2.x
-
node-gyp
npm install -g node-gyp
-
windows-build-tools
npm install --global --production windows-build-tools
Joi
JavaScript對象的規則描述語言和驗證器。
const Joi = require('joi');
const schema = {
username: Joi.string().alphanum().min(3).max(30).required().error(new Error(‘錯誤信息’)),
password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/),
access_token: [Joi.string(), Joi.number()],
birthyear: Joi.number().integer().min(1900).max(2013),
email: Joi.string().email()
};
Joi.validate({ username: 'abc', birthyear: 1994 }, schema);
說明:validate方法返回Promise對象,不匹配則拋出異常,里面包含錯誤信息
formidable
作用:解析表單,支持get請求參數,post請求參數、文件上傳。
// 引入formidable模塊
const formidable = require('formidable');
// 創建表單解析對象
const form = new formidable.IncomingForm();
// 設置文件上傳路徑
form.uploadDir = "/my/dir";
// 是否保留表單上傳文件的擴展名,默認為false
form.keepExtensions = false;
// 對表單進行解析
form.parse(req, (err, fields, files) => {
// fields 存儲普通請求參數
// files 存儲上傳的文件信息
});
說明:
- err錯誤對象 如果表單解析失敗 err里面存儲錯誤信息 如果表單解析成功 err將會是null
- fields 對象類型 保存普通表單數據
- files 對象類型 保存了和上傳文件相關的數據
數據分頁 mongoose-sex-page
const pagination = require('mongoose-sex-page');
pagination(集合構造函數).find().page(1).size(20).display(8).exec();
說明:
page 指定當前頁
suze 指定每頁顯示的數據條數
display 指定客戶端要顯示的頁碼數量
exec 向數據庫中發送查詢請求
{
"page": 1, //當前頁
"size": 2, //每頁顯示數據條數
"total": 4, //總共的數據條數
"records": [
//查詢出來的具體數據
{
"_id": "5e7db3a18e9cfb378c21cb97",
"title": "Test title!"
}
],
"pages": 2, //總共的頁數
"display": [1,2] //客戶端顯示的頁碼
}