我想在我的sails js应用程序中完全分离客户端和服务器端。
如果我删除'/'路由,它将自动从'assets'文件夹中提供一个名为index.html的文件。我想从资产文件夹中提供另一个文件,我该怎么做?
如果你看一下帆使用的中间件
配置/http.js
order: [
'startRequestTimer',
'cookieParser',
'session',
'myRequestLogger',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'www',
'favicon',
'404',
'500'
],
我们可以看到,它尝试匹配当前请求与config/routes.js
中定义的router
中间件,如果没有找到,则尝试服务于www
中间件中的静态文件。如果两者都失败,则返回404。
'www'中间件
www
中间件直接使用express的服务静态中间件
www: (function() {
var flatFileMiddleware = require('serve-static')(sails.config.paths['public'], {
maxAge: sails.config.http.cache
});
return flatFileMiddleware;
})(),
默认情况下,该模块将发送"index.html"文件来响应a请求一个目录。
所以如果你想使用sail的默认中间件,那么你可以把你的html文件放在assets/index.html
、assets/about/index.html
和assets/foo/index.html
中,它们将分别为/
、/about
和/foo
服务。
然而,如果你真的想控制这一点,那么你可以替换www中间件并用你自己的中间件替换它。请阅读sail关于中间件的文档以及serve-static的文档。
您可以查看有关此主题的类似问题:如何从express提供静态html文件而无需扩展?
您可以将Html
文件放在assets文件夹中。Sails将为请求的url提供html文件。
假设你把一个html文件about.html
放在assets
文件夹中,当url <your-domain>/about.html
被请求时,Sails将提供它。