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

相關文章
相關標籤/搜索