帆js路由静态html



我想在我的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.htmlassets/about/index.htmlassets/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将提供它。

最新更新