未加星标

koahub.js 0.09 发布,新增钩子机制

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二03 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

koahubjs发布0.09 新增钩子机制

添加钩子机制,控制器钩子和函数钩子

修复自动加载bug,实现除自动加载导出的default外,还能自动加载其他的方法


在使用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 发布,新增钩子机制

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

分页:12
转载请注明
本文标题:koahub.js 0.09 发布,新增钩子机制
本站链接:http://www.codesec.net/view/483275.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(38)