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>
include = true;<br>
break;<br>
}<br>
}<br>
<br>
if (include) {<br>
let ctrl = koahub.controllers[path];<br>
let pros = Object.getOwnPropertyNames(ctrl.prototype).filter(function(value) {<br>
if (value == 'constructor') {<br>
return false;<br>
}<br>
return true;<br>
});<br>
<br>
let callFlag = true;<br>
for (let k in pros) {<br>
if ('/' + pros[k] == action) {<br>
Object.getPrototypeOf(new ctrl())[pros[k]].call(this);<br>
callFlag = false;<br>
}<br>
}<br>
<br>
if (callFlag) {<br>
console.error('Hook Not Found Method');<br>
}<br>
} else {<br>
console.error('Hook Not Found Controller');<br>
}<br>
}<br>
<br>
runFunction(value) {<br>
eval(`koahub.utils.${value}`);<br>
}<br>
}
钩子需要提前挂载到相应的节点上//开始挂载<br>
//controller钩子<br>
koahub.hook.add('hook1', '/admin/public/sendEmail');<br>
//function钩子<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>
export function add(a, b) {<br>
console.log(a + b);<br>
return a + b;<br>
}<br>
<br>
export function dis(a, b) {<br>
console.log(a - b);<br>
return a - b;<br>
}
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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Dreamweaver CS6
Alat pembangunan web visual

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna