<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 前言 本文主要介紹關于koa-router部分的一些方便快捷的方法,可以提高整體項目的開發效率。 ## 自動注冊路由 該方法主要是自動檢測控制層部分的代碼文件,然后自動檢測其支持的方法,寫入路由中,再讓app配置使用注冊好的路由。 ~~~ MainApp.prototype.registerRoute = function(app, controllerDir){ var me = this; var routePath = ""; traverse(controllerDir, '', function(file) { try { if (path.extname(file) != '.js') { console.warn('Ingore non-js controller file:' + file); return; } var aController = require(path.join(controllerDir, file)); } catch (e) { console.error('Fail to load controller %s.', file, e.stack); return; } var controllerPath = file.substr(0, file.lastIndexOf('Controller')); var actionArr = getAction(aController); actionArr.forEach(function (ele) { var method = ele.method; var action = ele.action; routePath = controllerPath + '/' + action; if (action == 'index') { Router[method](controllerPath + '/', aController[method + '_' + action]); if (controllerPath == "/home") { Router[method]('/', aController[method + '_' + action]); } } Router[method](routePath, aController[method + '_' + action]); console.log('Registering directory controller %s\t%s', method, chalk.cyan(routePath)); //routerStacks.push(router); }); }); me.app .use(Router.routes()) .use(Router.allowedMethods()); me.boot(); }; ~~~ ~~~ //解析控制層中的方法,需要保證方法的標準格式 function getAction(controller){ var propertyArr = Object.getOwnPropertyNames(controller.__proto__); var re=/(get_)|(post_)|(delete_)|(put_)/i; var actionArr = []; var method = ''; var action = ''; propertyArr.forEach(function(propertyName){ if(re.test(propertyName) && (typeof controller[propertyName] == 'function')){ method = propertyName.split('_')[0]; action = propertyName.split('_')[1]; actionArr.push({ "method": method, "action": action }); } }) return actionArr; } ~~~ ## 攔截器 攔截的頁面目錄自行配置,寫成一個模塊文件。中間件中檢測過濾頁面中是否包含當前的頁面地址,如果包含進行判斷重定向的邏輯。 ~~~ //定義業務攔截目錄 module.exports = [ '/mc/profile', '/mc/list', '/mc/detail', '/mc/tasks', '/mc/homework', '/mc/errorbook', '/mc/picnote', '/member/profile', '/member/profileModifyData', '/member/modifyPhoneData', '/member/modifyPasswordData', '/mc/weekreport'] //中間件做攔截判斷 if (filterList.includes(linkUrl)) {} ~~~ ## 其他
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看