[nodejs]為什么自己不為express寫一個autoRoutes呢?

啊♂,`php`能夠?qū)憘€文件就自動添加路由。。。我`nodejs`也想要~~

我知道npm上有這樣相關(guān)的包,但是,為什么不考慮一下自己寫(fuzhi)幾行代碼實現(xiàn)一下呢?

autoRoutes

自動路由添加代碼


code in express

    /*app.js*/
    var list=[];
    readdir(path.join(root, 'routes', 'api'), './api');

    function readdir(pathname, sPath) {
        var arr = fs.readdirSync(pathname);
        arr.forEach(function(item) {
            var next = path.join(pathname, item);
            var api = sPath + '/' + item;
            var stats = fs.statSync(next);
            if (stats.isDirectory()) {
                readdir(next, api);
            } else {
                var repath = api.replace('.js', '');
                var obj = require(repath);
                list.push(obj);
                obj.success(app);
            }
        })
    }
    /*GET.js*/
 module.exports = {
     name: '獲取靜態(tài)資源列表',
     route: '/api/files/*',
     method: 'GET',
     dataType: 'json/jsonp',
     data: {
         limit: '要求返回的限制條數(shù),默認(rèn)0',
         page: '要求返回的頁碼,默認(rèn)1',
         cb: 'jsonp返回參數(shù),默認(rèn)為null'
     },
     success: function(app) {
         var _this = this;
         var root = app.get('rootname')
         var fs = require('fs');
         var path = require('path');
         var pub = path.join(root, 'public');
         app.get(this.route, function(req, res) { 
             res.end(req.url) 
         });
     },
 }

可以在文件api下自由添加路由文件,但是現(xiàn)在不支持根據(jù)文件路徑定制路由
因為我覺得。。。要是你的需求里面是file/a/b/c/d/e?q=abc這樣的路由,
那文件夾豈不是得層級多得要死?(實際上是為了restful api考慮)

而GET.js里面其實只需要一個success的方法就行了,但是為了方便打印,比如在app.js里面var list=[],然后list.push(obj),把遍歷到的對象掛載在這個數(shù)組里,這樣就可以實現(xiàn):

app.get('/apis', function(req, res) {
        res.json(list);
});

返回所有api,然后用可以根據(jù)GET.js里面的屬性,直接渲染成接口文檔,是不是特別棒?
(我才不會告訴你,使用ajax的時候直接復(fù)制粘貼呢。。。。

下面是文件路徑:

    root
    ├─app.js
    ├─routes
    │ └─api
   ...   ├─file
        ...  ├─GET.js
             ├─POST.js
             ├─DELET.js
             └─PUT.js
       

參考自文檔:express-autoroute

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容