Sails.js - 通过快速中间件提供航行路线

时间:2017-03-22 14:04:18

标签: javascript express routes sails.js

我有一个风帆应用程序,与应用程序关联的路由,静态资产是从root提供的,它运行正常。我想添加一个快速中间件,以便我可以在特定路径中提供路由和静态资产。

为了在config / http.js中的customMiddleware函数中使用下面使用的静态资源,

app.use('/my/new/path', express.static(path.join(__dirname, '../client', 'dist')));

有了上述内容,我可以从root用户和/ my / new / path加载静态文件。

现在谈到路线我不知道如何使用app.use处理通过快递中间件加载的帆路线,例如归属路线默认为' /'在我的config / routes-client.js中,而不是改变路线,我想使用下面的东西,我们通常用于典型的节点/快递应用程序,

app.use('/my/new/path', routes); --> where routes is my server routes

有没有办法在特定路径上添加快速中间件来提供sails路由?

2 个答案:

答案 0 :(得分:0)

我就是这样做的......

在http.js内部

var express = require('express');

    module.exports.http = {
        customMiddleware: function (app) {
            app.use('/docs', express.static(path.join(sails.config.appPath, '/docs')));
        },

    ... rest of the http.js code...
    }

当然在这个例子中我在路由/ docs上从我的应用程序的根目录提供docs文件夹...你加入你的逻辑......

答案 1 :(得分:0)

我不确定为什么您希望自动将前缀添加到自定义路由中,而不是直接将前缀添加到config/routes.js(或config-routes-client.js中的路由中})文件,但这里是:

// config/http.js
middleware: {
  reroute: function (req, res, next) {
    // Set the prefix you want for routes.
    var prefix = '/foo/bar';
    // Create a regex that looks for the prefix in the requested URL.
    var regex = new RegExp('^' + prefix + '(/|$)');
    // If the prefix is found, replace it with /
    if (req.url.match(regex)) {
      req.url = req.url.replace(regex, '/');
    }
    // Continue processing the request.
    return next();
  }
}

确保将reroute添加到middleware.order中的config/http.js数组中。顺便说一下,这也会处理静态文件。