node(koa2) web應用模塊介紹詳解
在自己的koa2 web項目中,用到了幾個模塊,感覺都是不錯的,特地來分享下這些模塊。
一、前言
我們都知道可以通過koa2 工程名的方式來初始化koa2項目,官方為我們增加了koa-bodyparser、koa-josn、koa-router等非常不錯的模塊,但是,仍不夠,所以我將搜集到的有用的包介紹下,當然,有好的包仍然會添加到其中。整個項目在koa2-web-engine ,為了方便查看,使用了原生的方式,歡迎查看。
二、新的模塊
將代碼克隆到本地并安裝依賴后,啟動服務器,在3000端口可以看到所有demo。
驗證碼
svg-captcha是一個驗證碼的庫,他創(chuàng)建了svg格式的驗證碼,可以在登錄時,驗證是否是正常的用戶登錄。
使用十分的簡單:
const svgCaptcha = require('svg-captcha');
captcha = svgCaptcha.create();
captcha對象中包含了svg數(shù)據(jù)和svg上顯示的內容,至于是否要大小寫強制驗證就可以通過配置的方式來增加了。
處理代碼位于routes/verificationCode.js中。
密碼加密登錄
后端主要是利用node-rsa生成公鑰和私鑰,再將公鑰發(fā)送給前端,前端利用jsencrypt進行加密后發(fā)送給node,node再用私鑰解密。
為了性能,我只在服務器啟動的時候生成公鑰和私鑰,以后的請求都是用這隊公私鑰,他位于utils/RSA.js文件中,解密在routes/login.js中。
更詳細的可以查看我的這篇博客:基于node簡單實現(xiàn)RSA加解密。
參數(shù)類型檢測
為了服務器的安全性,服務器對前端發(fā)送來的數(shù)據(jù)肯定是要做校驗的,我這使用的joi庫。
校驗主要靠Joi.validate()方法,第一個參數(shù)是要校驗的對象數(shù)據(jù),第二個參數(shù)是數(shù)據(jù)內每個鍵對應的數(shù)據(jù)類型,第三個則是可選的option,返回值是一個對象,該對象下的error字段用于判斷此次校驗是否成功。
在utils/checkParams.js中,paramsFormat定義了檢測類型,當然每個類型都得用joi內置的類型,checkParams()函數(shù)就是做檢測的地方,將最后的檢測結果return出去。
回到routes/joi.js中,利用checkParams()方法檢測數(shù)據(jù)類型,這兒的檢測是針對單個的請求,如果要針對所有的請求,可以寫成中間件的形式,如utils/middleware.js中,并在app.js中加入以下的就行了:
const middleware = require('./utils/middleware');
middleware.use(app);
防xss
這兒用到的是xss模塊,將每次請求到的數(shù)據(jù)經(jīng)過xss處理,輸出到后端。為此我自己搞了koa2-xss中間件模塊,順帶學習了如何發(fā)布npm包,感興趣的可以看下。
日志記錄
我是用的是log4js模塊,該模塊既可以記錄到數(shù)據(jù)庫,也可以記錄到log文件中,此處我是寫到文件中的。
utils/logs.js文件中是log4js的配置,并封裝了對外的調用接口,routes/log4js.js中是根據(jù)用戶發(fā)送的請求記錄到日志文件中。
定時任務
利用了node-schedule模塊,一個系統(tǒng)總會用到定時任務的,node-schedule提供了較為簡單的api,使用比較方便。
路由合并
koa2初始化的項目中是將每個路由文件require到app.js中的,當路由文件變多時,管理這些路由就是件麻煩的事,于是引入了koa-compose來管理這些路由文件,只對外暴露一個接口。詳細的可以查看routes/index.js文件。
webSocket
websocket在實時性要求比較高的場景下也是會用到的,我們可以利用ws模塊實現(xiàn)。更為詳細的可以查看我的這篇文章:基于node實現(xiàn)websocket通信。
三、總結
后期用到一些有意思,有用的模塊也將加入到koa2-web-engine 中。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
nodejs redis 發(fā)布訂閱機制封裝實現(xiàn)方法及實例代碼
這篇文章主要介紹了nodejs redis 發(fā)布訂閱機制封裝的相關資料,這里提供了實現(xiàn)方法,及實例代碼,具有參考價值,需要的朋友可以參考下2016-12-12
詳解nodejs微信公眾號開發(fā)——4.自動回復各種消息
這篇文章主要介紹了詳解nodejs微信公眾號開發(fā)——4.自動回復各種消息,非常具有實用價值,需要的朋友可以參考下2017-04-04
Nodejs腳本快速導出MySQL數(shù)據(jù)庫數(shù)據(jù)
在數(shù)據(jù)庫管理和數(shù)據(jù)遷移的過程中,常常需要將數(shù)據(jù)庫中的表數(shù)據(jù)和結構進行導出,本文將使用Node.js編寫一個腳本實現(xiàn)快速從MySQL數(shù)據(jù)庫中導出所有表的數(shù)據(jù)和結構,并保存為單獨的SQL文件,需要的可以參考下2024-10-10
Node.js中path.resolve與path.join的區(qū)別與作用詳解
path.resolve和path.join都是屬于path核心模塊下的方法,用來拼接路徑,下面這篇文章主要給大家介紹了關于Node.js中path.resolve與path.join的區(qū)別與作用的相關資料,需要的朋友可以參考下2023-03-03
詳解PNPM?Monorepo依賴項管理功能模擬實現(xiàn)
這篇文章主要介紹了PNPM?Monorepo依賴項管理功能模擬實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
Node.js原理阻塞和EventEmitter及其繼承的運用實戰(zhàn)
這篇文章主要介紹了Node.js原理阻塞和EventEmitter及其繼承的運用實戰(zhàn),文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
visual studio配置node.js開發(fā)的圖文教程
在進行node開發(fā)時,使用visual studio作為開發(fā)工具是非常常見的選擇,本文主要介紹了visual studio配置node.js開發(fā)的圖文教程,具有一定的參考價值,感興趣的可以了解一下2024-05-05
node.js在Linux下執(zhí)行shell命令、.sh腳本的問題
很多時候需要多個命令來完成一項工作,而這個工作又常常是重復的,這個時候我們自然會想到將這些命令寫成sh腳本,下次執(zhí)行下這個腳本一切就都搞定了,下面就是發(fā)布代碼的一個腳本示例2022-01-01
nodejs使用readline逐行讀取和寫入文件的實現(xiàn)
這篇文章給大家介紹了nodejs使用readline逐行讀取和寫入文件的實現(xiàn)方法,文中通過代碼示例給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-01-01

