美文网首页学学nodejsNodejs学习笔记Nodejs
[nodejs]为什么自己不为express写一个autoRou

[nodejs]为什么自己不为express写一个autoRou

作者: CharTen | 来源:发表于2016-10-30 09:22 被阅读959次

    啊♂,`php`能够写个文件就自动添加路由。。。我`nodejs`也想要~~

    我知道npm上有这样相关的包,但是,为什么不考虑一下自己写(fuzhi)几行代码实现一下呢?

    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: '获取静态资源列表',
         route: '/api/files/*',
         method: 'GET',
         dataType: 'json/jsonp',
         data: {
             limit: '要求返回的限制条数,默认0',
             page: '要求返回的页码,默认1',
             cb: 'jsonp返回参数,默认为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下自由添加路由文件,但是现在不支持根据文件路径定制路由
    因为我觉得。。。要是你的需求里面是file/a/b/c/d/e?q=abc这样的路由,
    那文件夹岂不是得层级多得要死?(实际上是为了restful api考虑)

    而GET.js里面其实只需要一个success的方法就行了,但是为了方便打印,比如在app.js里面var list=[],然后list.push(obj),把遍历到的对象挂载在这个数组里,这样就可以实现:

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

    返回所有api,然后用可以根据GET.js里面的属性,直接渲染成接口文档,是不是特别棒?
    (我才不会告诉你,使用ajax的时候直接复制粘贴呢。。。。

    下面是文件路径:

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

    参考自文档:express-autoroute

    相关文章

      网友评论

      本文标题:[nodejs]为什么自己不为express写一个autoRou

      本文链接:https://www.haomeiwen.com/subject/gqzyuttx.html