node(koa2) web应用模块介绍详解


Posted in Javascript onMarch 29, 2019

在自己的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 中。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
通过js脚本复制网页上的一个表格的不错实现方法
Dec 29 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
May 30 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
Aug 24 Javascript
关于JavaScript中name的意义冲突示例介绍
May 29 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
javascript等号运算符使用详解
Apr 16 Javascript
JavaScript中rem布局在react中的应用
Dec 09 Javascript
关于JS中的apply,call,bind的深入解析
Apr 05 Javascript
Javascript缓存API
Jun 14 Javascript
解决layui轮播图有数据不显示的情况
Sep 16 Javascript
小程序富文本提取图片可放大缩小
May 26 Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 #Javascript
浅谈js闭包理解
Mar 28 #Javascript
微信小程序中转义字符的处理方法
Mar 28 #Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
Mar 28 #Javascript
详解Js里的for…in和for…of的用法
Mar 28 #Javascript
ES7之Async/await的使用详解
Mar 28 #Javascript
详解vue-cli3多环境打包配置
Mar 28 #Javascript
You might like
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
javascript call方法使用说明
2010/01/11 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
JS实现轮播图效果
2020/01/11 Javascript
js实现查询商品案例
2020/07/22 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
python实现电子词典
2020/04/23 Python
Python实现线程池代码分享
2015/06/21 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
Django 自动生成api接口文档教程
2019/11/19 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
RIP版本1跟版本2的区别
2013/12/30 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
村干部承诺书
2014/03/28 职场文书
集中采购方案
2014/06/10 职场文书
化工专业自荐书
2014/06/16 职场文书
小学生安全责任书
2014/07/25 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书