将不同路径的实际功能导出到不同文件中

时间:2019-05-28 16:53:27

标签: javascript node.js express

当前,我的路线文件的设置如下:

    const logoutHelper = function (request, response) {
        if (request.session) {
            console.log("User '" + request.session.username + "' logged out.");
            request.session.destroy(function (err) {
                if (err) {
                    return next(err);
                } else {
                    return response.redirect('/');
                }
            });
        }
    }

    // Logout user and delete the session object
    app.get('/logout', logoutHelper);

如何将logoutHelper函数移至同一目录中的另一个文件?我想将帖子拆分并将路由分成不同的文件,因为我的原始route.js太大了。

1 个答案:

答案 0 :(得分:2)

在新文件中:

const logoutHelper = function (request, response) {
    if (request.session) {
        console.log("User '" + request.session.username + "' logged out.");
        request.session.destroy(function (err) {
            if (err) {
                return next(err);
            } else {
                return response.redirect('/');
            }
        });
    }
}

module.exports = {
    logoutHelper: logoutHelper
};

在您的路由文件中:

const Helpers = require('<helper file>');

// Logout user and delete the session object
app.get('/logout', Helpers.logoutHelper);

还有其他需要注意的地方,您正在使用next,但未在回调函数中定义它。您可能需要将其添加为logoutHelper函数的第三个参数。

我还假设您未使用es6-,如果您使用的是ES6,则可能可以清理该导出对象。