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]	//客户端显示的页码
}

猜你喜欢

转载自www.cnblogs.com/royal6/p/12586314.html