>  기사  >  php教程  >  koahub.js 0.09 출시, 새로운 후크 메커니즘

koahub.js 0.09 출시, 새로운 후크 메커니즘

WBOY
WBOY원래의
2016-10-17 09:12:03816검색

koahub.js 0.09 출시, 새로운 후크 메커니즘
koahubjs, 새로운 후크 메커니즘을 갖춘 0.09 출시

후크 메커니즘, 컨트롤러 후크 및 기능 후크 추가
자동 로딩 버그를 수정하고 내보낸 기본값을 자동으로 로드하는 것 외에도 다른 메소드도 자동으로 로드할 수 있음을 인식하세요

koahubjs Hook의 개발 과정을 기억하세요


koahubjs를 사용하여 프로젝트를 개발한 후에는 항상 추가 플러그인 기능을 추가해야 합니다. 이 경우 프로젝트 코드를 변경하는 것은 너무 위험하므로 후크 메커니즘이 필수적입니다. koahubjs 프레임워크에는 내장 데이터베이스가 없기 때문에 koahubjs는 후크를 메모리에 로드하고 메모리에 로드하는 것이 더 유연합니다.

훅 1

컨트롤러 후크
http 요청을 실행할 때 다른 컨트롤러의 메소드를 호출하고 싶습니다

훅 2

메소드 후크
http 요청을 실행할 때 공개 함수를 호출하고 싶습니다

코드로 바로 이동//hook.class.js 생성<br> //후크 정의<br> // {<br> // 주문 추가: [<br> //        '/admin/index/index'<br> // ]<br> // }<br> <br> 기본 클래스 내보내기 {<br> ​​생성자() {<br> This.hooks = {};<br> }<br> <br> Get() {<br>           return this.hooks;<br> }<br> <br> 추가(이름, 동작) {<br> 추가 = true; <br> for (this.hooks에 키를 넣습니다) {<br> If (이름 == 키) {<br> This.hooks[키].push(action);<br>                  추가 = false;<br>             }<br>         }<br>           if (추가) {<br> This.hooks[이름] = [작업];<br>         }<br> <br>           return this.get();<br> }<br> <br> 실행(이름) {<br> for (this.hooks에 키를 넣습니다) {<br> If (이름 == 키) {<br> for (let path of this.hooks[key]) {<br> If (/w+(.*)$/.test(path)) {<br> This.runFunction(경로);<br> } 그렇지 않으면 {<s> This.runController(경로);<br>                   }<br>                 }<br>             }<br>        }<br> }<br> <br> runController(경로) {<br> ​​​​​let action = path.slice(path.lastIndexOf('/'));<br> 경로 = path.slice(0, path.lastIndexOf('/'));<br> <br> 포함 = false;<br> for (koahub.controllers에서 _key를 입력하세요) {<br> If (_key == 경로) {<br>                include = true;<br>                 휴식;<br>             }<br>         }<br>  <br>         if (포함) {<br>             let ctrl = koahub.controllers[경로];<br>             let pros = Object.getOwnPropertyNames(ctrl.prototype).filter(function(value) {<br>                 if (값 == '생성자') {<br>                     false를 반환합니다.<br>                 }<br>                 true를 반환합니다.<br>             });<br>  <br>             let callFlag = true;<br>             (전문가를 받아들이세요) {<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('후크를 찾을 수 없음');<br>             }<br>         } 그밖에 {<br>             console.error('훅 컨트롤러를 찾을 수 없음');<br>         }<br>     }<br>  <br>     runFunction(값) {<br>         eval(`koahub.utils.${value}`);<br>     }<br> }</s>钩子需要提前挂载到应的节点上//开始挂载<code class="prettyprint linenums lang-php">//开始挂载<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.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.hook.add('hook1', '/admin/public/sendEmail');
//함수钩子
koahub.hook.add('hook2', 'tools.add(1,2)');npm install koahubjs --save   //调사용钩子 koahub.hook.run('hook1');
koahub.hook.run('hook2');
util방식//util下적*.util.js会自动挂载到koahub.utils上<br> //util/tools.util.js<br> 내보내기 기능 add(a, b) {<br>     console.log(a + b);<br>     a + b를 반환합니다.<br> }<br>  <img src="/Uploads/editor/2016-10-15/5801ebedbbdaa.jpg" alt="koahub.js 0.09 출시, 새로운 후크 메커니즘" > 내보내기 함수 dis(a, b) {<p class="da_word">     console.log(a - b);<think id="ad_196de4c105c1d8be">     a - b를 반환합니다.</think> }</p>KoaHub.js – 基于 Koa.js 平台的 Node.js 웹 快速开发框架

安装npm install koahubjs --saveStar Github https://github.com/einsqing/koahubjs 官网:http://js.koahub.com wemall 开源微商城 ,微信商city,商city源码,三级分销,微生鲜,微水果,微外卖,微订餐---专业的o2o系统 wemall地址:http://www.wemallshop.com
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.