我有一个风帆应用程序,与应用程序关联的路由,静态资产是从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路由?
答案 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
数组中。顺便说一下,这也会处理静态文件。