在自己的 koa2 web 项目中,用到了几个模块,感觉都是不错的,特地来分享下这些模块。
一、前言
我们都知道可以通过 koa2 工程名的方式来初始化 koa2 项目,官方为我们增加了 koa-bodyparser、koa-josn、koa-router 等非常不错的模块,但是,仍不够,所以我将搜集到的有用的包介绍下,当然,有好的包仍然会添加到其中。整个项目在 koa2-web-engine,为了方便查看,使用了原生的方式,欢迎查看。
二、新的模块
将代码克隆到本地并安装依赖后,启动服务器,在 3000 端口可以看到所有 demo。
验证码
svg-captcha 是一个验证码的库,他创建了 svg 格式的验证码,可以在登录时,验证是否是正常的用户登录。
使用十分的简单:
const svgCaptcha = require(‘svg-captcha’);
captcha = svgCaptcha.create();
captcha 对象中包含了 svg 数据和 svg 上显示的内容,至于是否要大小写强制验证就可以通过配置的方式来增加了。
处理代码位于 routes/verificationCode.js 中。
密码加密登录
后端主要是利用 node-rsa 生成公钥和私钥,再将公钥发送给前端,前端利用 jsencrypt 进行加密后发送给 node,node 再用私钥解密。
为了性能,我只在服务器启动的时候生成公钥和私钥,以后的请求都是用这队公私钥,他位于 utils/RSA.js 文件中,解密在 routes/login.js 中。
更详细的可以查看我的这篇博客:基于 node 简单实现 RSA 加解密。
参数类型检测
为了服务器的安全性,服务器对前端发送来的数据肯定是要做校验的,我这使用的 joi 库。
校验主要靠 Joi.validate()方法,第一个参数是要校验的对象数据,第二个参数是数据内每个键对应的数据类型,第三个则是可选的 option,返回值是一个对象,该对象下的 error 字段用于判断此次校验是否成功。
在 utils/checkParams.js 中,paramsFormat 定义了检测类型,当然每个类型都得用 joi 内置的类型,checkParams()函数就是做检测的地方,将最后的检测结果 return 出去。
回到 routes/joi.js 中,利用 checkParams()方法检测数据类型,这儿的检测是针对单个的请求,如果要针对所有的请求,可以写成中间件的形式,如 utils/middleware.js 中,并在 app.js 中加入以下的就行了:
const middleware = require(‘./utils/middleware’);
middleware.use(app);
防 xss
这儿用到的是 xss 模块,将每次请求到的数据经过 xss 处理,输出到后端。为此我自己搞了 koa2-xss 中间件模块,顺带学习了如何发布 npm 包,感兴趣的可以看下。
日志记录
我是用的是 log4js 模块,该模块既可以记录到数据库,也可以记录到 log 文件中,此处我是写到文件中的。
utils/logs.js 文件中是 log4js 的配置,并封装了对外的调用接口,routes/log4js.js 中是根据用户发送的请求记录到日志文件中。
定时任务
利用了 node-schedule 模块,一个系统总会用到定时任务的,node-schedule 提供了较为简单的 api,使用比较方便。
路由合并
koa2 初始化的项目中是将每个路由文件 require 到 app.js 中的,当路由文件变多时,管理这些路由就是件麻烦的事,于是引入了 koa-compose 来管理这些路由文件,只对外暴露一个接口。详细的可以查看 routes/index.js 文件。
webSocket
websocket 在实时性要求比较高的场景下也是会用到的,我们可以利用 ws 模块实现。更为详细的可以查看我的这篇文章:基于 node 实现 websocket 通信。
三、总结
后期用到一些有意思,有用的模块也将加入到 koa2-web-engine 中。
原文地址:http://www.zhuyuntao.cn/2019/… 欢迎关注微信公众号 [我不会前端] 或扫描下方二维码!