koahub.js 0.09 发布,新增钩子机制
2024-08-24 06:46:45
koahubjs发布0.09 新增钩子机制
添加钩子机制,控制器钩子和函数钩子
修复自动加载bug,实现除自动加载导出的default外,还能自动加载其他的方法
记koahubjs钩子开发过程
在使用koahubjs开发项目完成之后,总是需要另外增加一些插件功能,这种情况下改动项目代码,风险太大,所以钩子机制不可缺少。koahubjs将钩子加载到了内存中,原因是因为koahubjs框架并没有内置数据库,而且加载到内存中更加灵活。
钩子1
控制器钩子
执行某个http请求的时候,想要调用另外一个控制器的方法
钩子2
方法钩子
执行某个http请求的时候,想要调用某个公共的函数
直接上代码
//创建hook.class.js // hooks 定义 // { // addOrder: [ // ’/admin/index/index’ // ] // } export default class { constructor() { this.hooks = {}; } get() { return this.hooks; } add(name, action) { let add = true; for (let key in this.hooks) { if (name == key) { this.hooks[key].push(action); add = false; } } if (add) { this.hooks[name] = [action]; } return this.get(); } run(name) { for (let key in this.hooks) { if (name == key) { for (let path of this.hooks[key]) { if (/\w+\(.*\)$/.test(path)) { this.runFunction(path); } else { this.runController(path); } } } } } runController(path) { let action = path.slice(path.lastIndexOf(’/’)); path = path.slice(0, path.lastIndexOf(’/’)); let include = false; for (let _key in koahub.controllers) { if (_key == path) { include = true; break; } } if (include) { let ctrl = koahub.controllers[path]; let pros = Object.getOwnPropertyNames(ctrl.prototype).filter(function(value) { if (value == ’constructor’) { return false; } return true; }); let callFlag = true; for (let k in pros) { if (’/’ + pros[k] == action) { Object.getPrototypeOf(new ctrl())[pros[k]].call(this); callFlag = false; } } if (callFlag) { console.error(’Hook Not Found Method’); } } else { console.error(’Hook Not Found Controller’); } } runFunction(value) { eval(`koahub.utils.${value}`); } }
钩子需要提前挂载到相应的节点上
//开始挂载 //controller钩子 koahub.hook.add(’hook1’, ’/admin/public/sendEmail’); //function钩子 koahub.hook.add(’hook2’, ’tools.add(1,2)’); //调用钩子 koahub.hook.run(’hook1’); koahub.hook.run(’hook2’); util方法 //util下的*.util.js会自动挂载到koahub.utils上 //util/tools.util.js export function add(a, b) { console.log(a + b); return a + b; } export function dis(a, b) { console.log(a - b); return a - b; }
KoaHub.js – 基于 Koa.js 平台的 Node.js web 快速开发框架
安装
npm install koahubjs --save
Star Github
https://github.com/einsqing/koahubjs
官网:http://js.koahub.com
wemall 开源微商城 ,微信商城,商城源码,三级分销,微生鲜,微水果,微外卖,微订餐---专业的o2o系统
wemall地址:http://www.wemallshop.com
最新文章
- WPF程序在Windows 7下应用Windows 8主题
- SQL Server 2008通过LinkServer连接MySQL
- css居中完全指南(翻译)
- uva 10723 Cyborg Genes(LCS变形)
- Xamarin.Android开发实践(八)
- CentOS 6.6 中设置Terminal快捷键
- bzoj 3931 [CQOI2015]网络吞吐量(最短路,最大流)
- leetcode@ [2/43] Add Two Numbers / Multiply Strings(大整数运算)
- HTML5 Canvas核心技术—图形、动画与游戏开发.pdf4
- Java SAX Schema Validation
- Oracle EBS-SQL (BOM-6):检查物料失效但BOM中未失效的数据.sql
- js和循环依赖
- js实现url链接encode加密
- Myeclipse黑色主题配置
- windows 杀死进程
- Python3 使用pymysql链接MySQL数据库
- NodeJS基础教程
- 小丸工具箱FAQ
- django面试二
- kubernets之endpoints