首頁 >php教程 >php手册 >koahub.js 0.09 發布,新增鉤子機制

koahub.js 0.09 發布,新增鉤子機制

WBOY
WBOY原創
2016-10-17 09:12:03838瀏覽

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
koahub.js 0.09 發布,新增鉤子機制

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn