node(koa2) web应用模块介绍

在本身的koa2 web项目中,用到了几个模块,感受都是不错的,特意来分享下这些模块。前端

1、前言

咱们都知道能够经过koa2 工程名的方式来初始化koa2项目,官方为咱们增长了koa-bodyparser、koa-josn、koa-router等很是不错的模块,可是,仍不够,因此我将搜集到的有用的包介绍下,固然,有好的包仍然会添加到其中。整个项目在koa2-web-engine ,为了方便查看,使用了原生的方式,欢迎查看。node

2、新的模块

将代码克隆到本地并安装依赖后,启动服务器,在3000端口能够看到全部demo。git

验证码

svg-captcha是一个验证码的库,他建立了svg格式的验证码,能够在登陆时,验证是不是正常的用户登陆。github

使用十分的简单:web

const svgCaptcha = require('svg-captcha');
captcha = svgCaptcha.create();

captcha对象中包含了svg数据和svg上显示的内容,至因而否要大小写强制验证就能够经过配置的方式来增长了。数据库

处理代码位于routes/verificationCode.js中。npm

密码加密登陆

后端主要是利用node-rsa生成公钥和私钥,再将公钥发送给前端,前端利用jsencrypt进行加密后发送给node,node再用私钥解密。后端

为了性能,我只在服务器启动的时候生成公钥和私钥,之后的请求都是用这队公私钥,他位于utils/RSA.js文件中,解密在routes/login.js中。api

更详细的能够查看个人这篇博客:基于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通讯。

3、总结

后期用到一些有意思,有用的模块也将加入到koa2-web-engine 中。

原文地址: http://www.zhuyuntao.cn/2019/...
欢迎关注微信公众号[ 我不会前端 ]或扫描下方二维码!

weixin8cm.jpg

相关文章
相关标签/搜索