未加星标

nodejs 钩子机制开发教程,欢迎指点

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

记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) {
;
}
}

钩子需要提前挂载到相应的节点上


//开始挂载
//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 快速开发框架

官网:http://js.koahub.com

[该贴被tecentID26750于2016-10-08 16:22修改过]

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

主题: Node.js数据风险数据库
分页:12
转载请注明
本文标题:nodejs 钩子机制开发教程,欢迎指点
本站链接:http://www.codesec.net/view/481770.html
分享请点击:


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