摘要:規(guī)范化安全開發(fā)手腳架剛接觸的時候心理也有一點點擔憂,是一個輕量級的框架,這意味著我們想要做好一個理想的手腳架需要自己去改變很多東西,一些流行的第三方更要做好處理,那么時間成本會逐級的提高。
規(guī)范化安全開發(fā) KOA 手腳架
剛接觸 KOA 的時候心理也有一點點擔憂,KOA 是一個輕量級的框架,這意味著我們想要做好一個理想的手腳架需要自己去改變很多東西,一些流行的 npm 第三方更要做好處理,那么時間成本會逐級的提高。
koa-rack
項目目錄. ├── app.js ├── config ├── controllers ├── doc ├── dox.config.json ├── ecosystem.json ├── index.js ├── jsdoc-conf.json ├── lib ├── log4js ├── Makefile ├── models ├── node_modules ├── npm-shrinkwrap.json ├── oneapm.js ├── package.json ├── proxy ├── README.md ├── routes ├── server ├── sql ├── start.sh ├── static ├── test ├── views └── webpack.config.jsconfig
npm i config --save
config 這個文件夾的作用是用來做開發(fā)環(huán)境、生產環(huán)境和測試環(huán)境的配制工作,依賴于 config 組件,目錄下以此建立相關的配置文件:
. ├── default.json ├── development.json ├── production.json ├── readme.md └── test.json
在 json 后綴的文件無法做注釋,所以添加 readme.md 文件做配置文件的說明。這個只是我自己的習慣,實際上 config 組件支持多種文件格式,它的機理就是通過判斷 NODE_ENV 然后分別加載 config 文件夾下的文件。
docnpm i json-zero -g
文檔文件夾。這里我采用 json-zero 組件進行注釋文檔生成。
lib函數(shù)文件夾。
log4jsnpm i log4js --save
擴展 log4js 的日志輸出,這里面還是有一點門道的,因為 KOA 與 EXPRESS 并不相同,所以想要在 KOA上合理的使用 log4js 是要下一點心思去二次封裝一下,以便適應自己的項目。
controllerscontrollers 文件夾保存控制器
. └── web └── user └── index.js
控制器通過 yield 來讀取 User 內的數(shù)據(jù)
const User = require("../../../models/web/index"); module.exports.home = function*() { var data = yield User.test({}); };routes
. ├── index.js └── web
路由器文件夾,定義 http 的請求指向控制器:
const router = require("koa-router")(), debug = require("debug")("app:routes:index"); /** * 引入控制器 */ var Web = require("./../controllers/web/user/index"); /** * 主頁 */ router.get("/", Web.home); module.exports = router;views
. ├── 400.html ├── 500.html └── home.html
視圖文件夾。
models數(shù)據(jù)層文件夾。
. ├── db │?? ├── mysql_orm.js │?? └── mysql_pool.js └── web ├── index.js └── table ├── index.js └── photo.js
db 文件夾定義兩種連接 mysql 的方式,web 里面就是具體的業(yè)務代碼。
以上四個文件組成了這個手腳架的基礎業(yè)務處理邏輯:
這個架構過程是靈活多變的,完全可以根據(jù)自己的需要進行取舍和重構,我只所以將路由和控制器分開成兩個文件夾,更多的是考慮到當一個項目區(qū)分 n 個模塊的時候,彼此之間相互獨立卻又有一些相同的 api 接口,那么這樣架構可以更清晰的區(qū)分和查找接口。
我在15年和16年上半年之間經歷過一個項目,使用 node 做中間層,本來一切順利,但是苦于后端 java 根據(jù)業(yè)務調整頻繁更換和更改 api 接口,造成了非常大的重復工作。漸漸的我就摸索出一套設計中間層的經驗,在我們直接引用外部 api 接口之前,不要相信它是一成不變的,不要相信它是永遠存在的,不要相信它是必要的。在此基礎上根據(jù)功能分成若干模塊,稍微費點心力進行二次封裝然后再進行引用,封裝的時候盡量考慮他不是唯一接口,并提供便捷和可替換性。
入口文件入口文件將它拆分為幾個部分:
. ├── app.js ├── index.js ├── Makefile ├── server │?? ├── api │?? ├── auth │?? ├── index.js │?? ├── lib │?? │?? ├── compose.js │?? │?? ├── cors.js │?? │?? ├── etag.js │?? │?? ├── fresh.js │?? │?? ├── gzip.js │?? │?? └── ketag.js │?? └── middleware │?? ├── helmet_set.js │?? └── index.js ├── start.sh └── static
這里我需要吐槽一下 grunt 和 gulp,發(fā)明 grunt 和 gulp 的人一定是天才,但是它倆真的沒有想象中那么好用,我寧愿使用 npm script 或者 makefile。
因為 KOA 的 generator 相關的特性,我們必須將很多流行的第三方進行改造,我建議不要去找 npm 庫里的那些已經改造好的組件,那些大多版本落后,自力更生比較好一些。
helmet 是一個很流行的組件,用于處理一些常見的安全問題。
etag處理靜態(tài)資源響應時間。
一些細節(jié) Node Security project(nsp)檢查你使用的模塊是否是易被一些已知的手段攻擊,可以給一個包的所有依賴關系上鎖,并且創(chuàng)建一個 npm-shrinkwrap.json 文件。
$ npm install -g nsp nsp-formatter-checkstyle
寫入:
$ npm shrinkwrap
如果想要包含 dependencies and devDependencies 需要添加 --dev:
$ npm shrinkwrap --dev
檢查:
$ nsp check --output summary
$ nsp check --output checkstyle
在根目錄下創(chuàng)建 .nsprc 文件:
retire.jsretire.js是一個命令行掃描器,幫助你找到你應用中依賴庫存在的漏洞。
requiresafehttps://requiresafe.com/
david$ npm install david -g
檢查更新,執(zhí)行命令
david
檢查全局模塊
npm outdated$ david -g
$ npm outdated
$ npm outdated -g --depth 0
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/86443.html
摘要:服務端渲染的手腳架這個啟動包的設計是為了讓你使用一整套最新最酷的前端技術,所有都是可配置,富特性,基于已經提供代碼熱加載,使用預處理,單元測試,代碼覆蓋率報告,代碼分割等等更多。 Universal React Starter Kit 服務端渲染的React手腳架 這個啟動包的設計是為了讓你使用一整套最新最酷的前端技術,所有都是可配置,富特性,基于webpack已經提供代碼熱加載,使用...
摘要:服務端渲染的手腳架這個啟動包的設計是為了讓你使用一整套最新最酷的前端技術,所有都是可配置,富特性,基于已經提供代碼熱加載,使用預處理,單元測試,代碼覆蓋率報告,代碼分割等等更多。 Universal React Starter Kit 服務端渲染的React手腳架 這個啟動包的設計是為了讓你使用一整套最新最酷的前端技術,所有都是可配置,富特性,基于webpack已經提供代碼熱加載,使用...
摘要:服務端渲染的手腳架這個啟動包的設計是為了讓你使用一整套最新最酷的前端技術,所有都是可配置,富特性,基于已經提供代碼熱加載,使用預處理,單元測試,代碼覆蓋率報告,代碼分割等等更多。 Universal React Starter Kit 服務端渲染的React手腳架 這個啟動包的設計是為了讓你使用一整套最新最酷的前端技術,所有都是可配置,富特性,基于webpack已經提供代碼熱加載,使用...
摘要:還記得一年半前轉向后端的那種無助的感覺,獨自一人摸黑走路,學習各種前端知識,走了不少彎路,現(xiàn)在終于算是入門了前端我相信不少人也有我當時同樣的無助,所以我在空閑時間整理了下所用到的知識,便編寫了一個手腳架,希望能給其他正學習前端的同學一些參考 還記得一年半前轉向后端的那種無助的感覺,獨自一人摸黑走路,學習各種前端知識,走了不少彎路,現(xiàn)在終于算是入門了前端~我相信不少人也有我當時同樣的無助...
閱讀 1631·2021-11-16 11:45
閱讀 2560·2021-09-29 09:48
閱讀 3339·2021-09-07 10:26
閱讀 1853·2021-08-16 10:50
閱讀 1884·2019-08-30 15:44
閱讀 2710·2019-08-28 18:03
閱讀 1909·2019-08-27 10:54
閱讀 1835·2019-08-26 14:01