【问题标题】:Proper way to organize myapp/routes/*组织 myapp/routes/* 的正确方法
【发布时间】:2012-02-20 02:36:53
【问题描述】:

使用来自 npm 的最新稳定 node.js 和 express,我创建了我的第一个 express 项目。

默认生成的应用程序定义了 routes/index.js,其中包含呈现默认索引视图的单个路由。

我立即假设我可以将其他 .js 文件添加到 routes/ 文件夹中,并且它们会被包含在内。这没有成功。仅包含 routes/index.js。向 routes/index.js 添加额外的路由可以正常工作。

按照 express 项目生成器提供的结构,定义和组织 Express 路线的正确方法是什么?


答案,转述 DailyJS 上的文章:

给定以下路线:

app.get('/', function() {});
app.get('/users', function() {});
app.get('/users/:id', function() {});

... 创建以下文件:

routes/
├── index.js
├── main.js
└── users.js

然后,在 routes/index.js 内部:

require('./main');
require('./users');

对于每组新的相关路由,在 routes/ 中创建一个新文件,并从 routes/index.js 中 require() 它。将 main.js 用于不适合其他文件的路由。

【问题讨论】:

    标签: node.js express routes


    【解决方案1】:

    我更喜欢动态加载路由,而不是每次添加新路由文件时都必须手动添加另一个要求。这是我目前正在使用的。

    var fs = require('fs');
    
    module.exports = function(app) {
        console.log('Loading routes from: ' + app.settings.routePath);
        fs.readdirSync(app.settings.routePath).forEach(function(file) {
            var route = app.settings.routePath + file.substr(0, file.indexOf('.'));
            console.log('Adding route:' + route);
            require(route)(app);
        });
    }
    

    我在应用程序加载时调用它,然后它需要 routePath 中的所有文件。每条路线的设置如下:

    module.exports = function(app) {
        app.get('/', function(req, res) {
            res.render('index', {
                title: 'Express'
            });
        });
    }
    

    要添加更多路由,您现在要做的就是在 routePath 目录中添加一个新文件。

    【讨论】:

    • 你的第一个代码块是在app.js 还是./router/index.js
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2020-03-24
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多