1.1.0 • Published 5 months ago

awesome-dev-utils v1.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

awesome-dev-utils

安装

npm install awesome-dev-utils

导入

const awesome = require('awesome-dev-utils')

格式化时间

const dtStr = awesome.dateFormat(new Date())
console.log(dtStr) // 2023-12-11 17:08:14

转义 HTML 中的特殊字符

const htmlStr = '<h1 title="abc">这是h1 标签<span>123&nbsp;</span></h1>'
const str = awesome.htmlEscape(htmlStr)
console.log(str) // &lt;h1 title=&quot;abc&quot;&gt;这是h1 标签&lt;span&gt;123&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;

还原 HTML 中的特殊字符

const str2 = awesome.htmlUnEscape(str)
console.log(str2) // <h1 title="abc">这是h1 标签<span>123&nbsp;</span></h1>

expressJoi参数验证中间件

const express = require('express')
const app = express()
// 导入 Joi 来定义验证规则 npm i joi@17.4.0
const Joi = require('joi')
// 1. 导入 expressJoi
const awesome = require('awesome-dev-utils')
const { expressJoi } = awesome

// 解析 x-www-form-urlencoded 格式的表单数据
app.use(express.urlencoded({ extended: false }))

// 2. 定义验证规则
// 注意:如果客户端提交的某些参数项未在 schema 中定义,
// 此时,这些多余的参数项默认会被忽略掉
const userSchema = {
  // 2.1 校验 req.body 中的数据
  body: {
    username: Joi.string().alphanum().min(3).max(12).required(),
    password: Joi.string()
      .pattern(/^[\S]{6,15}$/)
      .required(),
    repassword: Joi.ref('password')
  },
  // 2.2 校验 req.query 中的数据
  query: {
    name: Joi.string().alphanum().min(3).required(),
    age: Joi.number().integer().min(1).max(100).required()
  },
  // 2.3 校验 req.params 中的数据
  params: {
    id: Joi.number().integer().min(0).required()
  }
}

// 3. 在路由中通过 expressJoi(userSchema) 的方式
//    调用中间件进行参数验证
app.post('/adduser/:id', expressJoi(userSchema), function (req, res) {
  const body = req.body
  res.send(body)
})

// 4.1 错误级别中间件
app.use(function (err, req, res, next) {
  // 4.1 Joi 参数校验失败
  if (err instanceof Joi.ValidationError) {
    return res.send({
      status: 1,
      message: err.message
    })
  }
  // 4.2 未知错误
  res.send({
    status: 1,
    message: err.message
  })
})

// 调用 app.listen 方法,指定端口号并启动web服务器
app.listen(3001, function () {
  console.log('Express server running at http://127.0.0.1:3001')
})

开源协议

MIT

1.1.0

5 months ago

1.0.0

5 months ago