koahub.js 0.09 發布,新增鉤子機制
koahubjs發佈0.09 新增鉤子機制
加入鉤子機制,控制器鉤子和函數鉤子
修復自動載入bug,實現除自動載入導出的default外,還能自動載入其他的方法
記koahubjs鉤子開發過程
在使用koahubjs開發專案完成之後,總是需要另外增加一些插件功能,這種情況下改動專案程式碼,風險太大,所以鉤子機制不可缺少。 koahubjs將鉤子載入到了記憶體中,原因是因為koahubjs框架並沒有內建資料庫,而且載入到記憶體中更加靈活。
鉤子1
控制器鉤子
執行某個http請求的時候,想要呼叫另外一個控制器的方法
鉤子2
方法鉤子
執行某個http請求的時候,想要呼叫某個公共的函數
直接上程式碼//建立hook.class.js<br>
// hooks 定義<br>
// {<br>
// addOrder: [<br>
// '/admin/index/index'<br>
// ]<br>
// }<br>
<br>
export default class {<br>
constructor() {<br>
this.hooks = {};<br>
}<br>
<br>
get() {<br>
return this.hooks;<br>
}<br>
<br>
add(name, action) {<br>
let add = true;<br>
for (let key in this.hooks) {<br>
if (name == key) {<br>
this.hooks[key].push(action);<br>
add = false;<br>
}<br>
}<br>
if (add) {<br>
this.hooks[name] = [action];<br>
}<br>
<br>
return this.get();<br>
}<br>
<br>
run(name) {<br>
for (let key in this.hooks) {<br>
if (name == key) {<br>
for (let path of this.hooks[key]) {<br>
if (/w+(.*)$/.test(path)) {<br>
this.runFunction(path);<br>
} else {<br>
this.runController(path);<br>
}<br>
}<br>
}<br>
}<br>
}<br>
<br>
runController(path) {<br>
let action = path.slice(path.lastIndexOf('/'));<br>
path = path.slice(0, path.lastIndexOf('/'));<br>
<br>
let include = false;<br>
for (let _key in koahub.controllers) {<br>
if (_key == path) {<br> 則包含 = true;<br>
休息;<br>
}<br>
}<br>
<br>
如果(包括){<br>
讓 ctrl = koahub.controllers[路徑];<br>
讓者 pros = Object.getOwnPropertyNames(ctrl.prototype).filter(function(value) {<br>
if(值=='建構子'){<br>
地與為 false;<br>
}<br>
則返回 true;<br>
});<br>
<br>
則以 callFlag = true;<br>
對於(讓 k 加入專業人士){<br>
if ('/' + pros[k] == action) {<br>
Object.getPrototypeOf(new ctrl())[pros[k]].call(this);<br>
callFlag = false;<br>
}<br>
}<br>
<br>
如果(callFlag){<br>
console.error('鉤子未找到方法』);<br>
}<br>
} 另外 {<br>
console.error('掛鉤未找到控制器');<br>
}<br>
}<br>
<br>
運作函數(值){<br>
eval(`koahub.utils.${value}`);<br>
}<br>
}
鉤子需要提前掛載到對應的節點上//開始掛載<br>
//控制器鉤子<br>
koahub.hook.add('hook1', '/admin/public/sendEmail');<br>
//函數鉤子<br>
koahub.hook.add('hook2', 'tools.add(1,2)');<br>
<br>
//呼叫鉤子<br>
koahub.hook.run('hook1');<br>
koahub.hook.run('hook2');
util方法//util下的*.util.js會自動掛載到koahub.utils上<br>
//util/tools.util.js<br>
導出函數 add(a, b) {<br>
console.log(a + b);<br>
返回 a + b;<br>
}<br>
<br>
導出函數 dis(a, b) {<br>
console.log(a - b);<br>
回 a - b;<br>
}
KoaHub.js – 基於 Koa.js 平台的 Node.js web 快速開發框架
安裝npm install koahubjs --保存
Star Github
https://github.com/einsqing/koahubjs
官網:http://js.koahub.com
wemall開源微商城,微信商城,商城源碼,三級分銷,微生鮮,微水果,微外賣,微訂餐---專業的o2o系統
wemall網址:http://www.wemallshop.com