koahub.js 0.09 发布,新增钩子机制
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
koahub.js 0.09 发布,新增钩子机制的更多相关文章
- smartjs 0.2发布 - 新增oop模块&AOP增强
SmartJS2.0发布,更新内容如下: 新增oop(klass,factory)模块: promiseEvent加入非阻塞模式noBlock: trigger加入属性监听; smartjs主模块优化 ...
- [转] js中的钩子机制(hook)
什么是钩子机制?使用钩子机制有什么好处? 钩子机制也叫hook机制,或者你可以把它理解成一种匹配机制,就是我们在代码中设置一些钩子,然后程序执行时自动去匹配这些钩子:这样做的好处就是提高了程序的执行效 ...
- KoaHub.js是基于 Koa.js 平台的 Node.js web 快速开发框架
koahubjs KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, A ...
- Node.js进阶篇-koa、钩子函数、websocket、嵌入式开发
代码地址如下:http://www.demodashi.com/demo/12932.html 一.简介 koa是由Express原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的We ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- .NET Core 3.0即将发布!
期待已久的.NET Core 3.0即将发布! .NET Core 3.0在.NET Conf上发布.大约还有9个多小时后,.NET Conf开始启动. 为期3天的大概日程安排如下: 第1天-9月23 ...
- hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档
相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclip ...
- Backbone.js 0.9.2 中文解释
// Backbone.js 0.9.2 // (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc. // Backbone may be freely ...
- Redis的消息订阅及发布及事务机制
Redis的消息订阅及发布及事务机制 订阅发布 SUBSCRIBE PUBLISH 订阅消息队列及发布消息. # 首先要打开redis-cli shell窗口 一个用于消息发布 一个用于消息订阅 # ...
随机推荐
- Update关联查询不走索引,效率低下
优化一个sql,就是有A,B两个表,要利用b表的字段更新a表对应的字段.形如 Sql代码 update A set A.a=(select B.b from B where A.id=B.id); 原 ...
- MyBatis 的Mapper中有小于号的处理
<![CDATA[ select * from person t where t.birthday < #{birthday} ]]> 也可以进行转义: < < 小于号 ...
- Windows上的音频采集技术
在制作发布端的时候,需要采集到声卡的输出信号,以便与麦克风的输入信号进行混音,对于音频处理的技术,主要有如下几种: 采集麦克风输入 采集声卡输出 将音频数据送入声卡进行播放 对多路音频输入进行混音处理 ...
- 巧用css text-indent减小中文标点符号的占位大小
由于设计需要,我们的页面中经常会有如下效果: 可是我们实现出来的效果确实这样的: 看起来两行文本没有对齐嘛,仔细检查后原来是[字符的原因,因为是中文标点符号占半个字的位置.不信?选中下汉字标点符号看一 ...
- CodeForces 512B(区间dp)
D - Fox And Jumping Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64 ...
- 我的Java笔记
第一章 一 计算机程序:一系列有序的指令集合. 二 java语言分为三个领域 javaSE java技术核心(桌面应用程序)qq 百度云 javaEE 企业版(面向internet的应用程序)京东 淘 ...
- python爆破定长密码脚本
def get_pwd(str, num):#str为可选字符集,num为密码长度 if(num == 1): for x in str: yield x else: for x in str: fo ...
- iOS WebViewJavascriptBridge初步尝试与图文详细讲解
JS和OC的交互这是个永恒话题,使用场景也是越来越多,如今一些reactnative.vue框架等,都是在重点结合原生与H5的混合使用. 那么,如何快捷方便的使用两者交互是一个很重要的关键点. 1.传 ...
- ArcGIS制图表达Representation-规则和几何效果
ArcGIS制图表达Representation-规则和几何效果 by 李远祥 对制图表达运用是否纯熟,主要是看对制图表达规则的理解和巧妙运用.前面章节已经粗略介绍过制图表达的运用,通过一些简单的规则 ...
- 应用 EditPlus 配置 Java 编译环境
此文全文摘抄自: http://jingyan.baidu.com/album/37bce2be3ceef61002f3a208.html?picindex=7,谢啦 应用成功: EditPlus(文 ...