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

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

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

(0)

相关推荐

  • nodejs中Express与Koa2对比分析

    知会上看到有个问题 <Express会被Koa2取代吗?> .刚好对Express.koa有点小研究,于是简单回答了一下. 1.先说结论 目前没有看到Express会被koa2取代的迹象. 目前来说,Express的生态更成熟,入门门槛相对较低.从npm上的下载热度来说,两者的差距还较大,Express的月下载量约为koa2的40倍. 不过koa2的亮点足够吸引人,生态也开始变得完善. 2.从使用门槛来说 从使用上来说,Express对初学者更有好些,对着官网修修改改改就能做点东西出来. ko

  • Node.js中Koa2在控制台输出请求日志的方法示例

    前言 Koa2真的是个很轻量的框架,轻量到路由都作为了模块单独了出来,Koa2也没有日志功能,如果我们需要有一些请求的日志和时间,我们就需要引入日志中间件 下面话不多说了,来一起看看详细的介绍吧 引入时间格式化库MomentJS 安装MomentJS npm install moment --save 简单格式化时间 使用YYYY-MM-DD HH:MM:SS代表 年-月-日 时-分-秒(24小时制) console.log(Moment().format('YYYY-MM-DD HH:MM:S

  • node使用Koa2搭建web项目的方法

    随着Node.js的日益火热,各种框架开始层出不穷的涌现出来,Node.js也开始逐渐的被应用到处理服务端请求的场景中.搭建Web项目的框架也随之开始出现--express.koa.koa2.egg等,当然要了解其好坏还是要自己去啃源码的.本文将不会涉及到源码,只是带领初学者简单了解下Koa2的基本使用,欢迎大家在评论中互相交流学习. 注意:koa2使用了ES7的语法,所以使用时请升级Node版本到最新.了解更详细的源码信息可以到git上的koajs/koa去了解 1. 项目目录结构 2. 代码

  • 阿里大于短信验证码node koa2的实现代码(最新)

    今天给大家分享一下最新版阿里大于的短信验证码在node koa2的实现,还是有很多坑需要注意. 首先需要在阿里云注册账号,并获取阿里云访问秘钥,在控制台完成模板与签名的申请获得调用接口的必备参数.具体方法参见短信发送api 步骤一:安装npm包 npm install @alicloud/sms-sdk --save 步骤二:代码实现.常见一个sendmsg.js的controller /** * 引用sdk */ const SMSClient = require('@alicloud/sms

  • node+koa2+mysql+bootstrap搭建一个前端论坛

    前言 在学习了koa2和express并写了一些demo后,打算自己写一个项目练练手,由于是在校生,没什么好的项目做,即以开发一个前端论坛为目标,功能需求参照一下一些社区拟定,主要有: 登录注册 个人信息维护.头像等基本信息 发表文章,富文本编辑器采用wangEditor插件,编辑.删除文章,文章分类等 文章评论.文章收藏.点赞等 支持文章分页.评论分页加载 关注取关用户 资源(文件)上传分享.下载.查看 学习资源推荐..... 作者个人日记 but....由于种种原因,目前仅实现了部分功能,资

  • nodejs6下使用koa2框架实例

    koa2里面使用ES7的语法,如async.await所以需要运行在node7.6之后:但在node7.6之前也可以利用babel是的koa2可以运行. 首先项目中安装babel,和babel的几个模块: npm install babel babel-register babel-preset-env --save 然后在入口文件中引入'babel-register'模块 require('babel-register'); 而后引入业务代码: require('./server.js');

  • Node.js环境下Koa2添加travis ci持续集成工具的方法

    前言 因为最近使用koa2做项目测试开发,所以想整合下travis ci,网上资料也比较少,于是自己就整了个,做个记录.分享出来供大家参考学习,下面来看看详细的介绍吧. 方法如下: 先来看下travis.yml的配置 language: node_js node_js: - "6" before_script: - ./node_modules/.bin/knex migrate:latest --knexfile='./app/knexfile.js' script: - npm r

  • Node.js Koa2使用JWT进行鉴权的方法示例

    前言 在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行保护,那么别人就可以很容易地获取并调用这些 API 进行操作.那么服务器端要如何进行鉴权呢? Json Web Token 简称为 JWT,它定义了一种用于简洁.自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法.JWT 可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名. 说得好像跟真的一样,那么到底要怎么进行认证呢? 首先用户登录时,输入用户名和密码后请求服务器登录接口

  • nodejs之koa2请求示例(GET,POST)

    GET 请求 在 koa 中,GET请求获取请求数据request对象中的 query 方法和 querystring 方法, query方法返回的是格式化好的参数,querystring 方法返回的是请求字符串.废话不多说,直接上代码 app.js 中添加如下代码: router.get('/getData', async (ctx,next) => { // 从上下文的request对象中获取 let request = ctx.request; let req_query = reques

  • node koa2实现上传图片并且同步上传到七牛云存储

    因为升级到新的node版本,之前的通过很多上传图片的方式都已经不适用了,所以自己就写了一个对于 koa2上传图片的小demo,记录一下心得. 废话不多说,下面直接上代码,里面都有注释. const Koa = require('koa'); const route = require('koa-route'); const serve = require('koa-static'); const inspect = require('util').inspect const path = req

随机推荐