node常用第三方模塊


node常用第三方模塊

dateformat

時間格式化模塊

安裝:npm install dateformat
使用格式:dateFormat(時間戳,格式)

例如:

dateFormat(Date.now(),'yyyy-mm-dd')	//返回2020-3-20

第三方模塊 router

功能:實現路由

使用步驟:

  1. 獲取路由對象

  2. 調用路由對象提供的方法創建路由

  3. 啟用路由,使路由生效

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依賴的其他環境

  1. python 2.x

  2. node-gyp

    npm install -g node-gyp

  3. 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 存儲上傳的文件信息
 });

說明:

  1. err錯誤對象 如果表單解析失敗 err里面存儲錯誤信息 如果表單解析成功 err將會是null
  2. fields 對象類型 保存普通表單數據
  3. 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]	//客戶端顯示的頁碼
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM