如何在sails.js中提供静态文件夹?

fxp*_*fxp 11 sails.js

我想在网址下app提供与assets文件夹位于同一级别的文件夹/app.

可以AppController根据网址提供文件,但是我想知道是否有可能像下面的快递一样做这个?

app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)

Edw*_*uth 12

您可以通过将自定义中间件添加到config/http.js中来使用自定义中间件进行快速传输:

var express = require('express');
module.exports.express = {
  customMiddleware: function (app) {
      app.use(express.logger());
      app.use(express.compress());
      app.use('/app', express.static(process.cwd() + '/../client/www/'));
    }
};
Run Code Online (Sandbox Code Playgroud)


bre*_*hin 6

在我的头顶,有两个选择:

  1. 创建assets/app指向目标的符号链接.资源应该可以访问,http://your.host.com/app/*因为这是Sails服务资产的方式.
  2. 在Sails下面还有Express,你应该可以通过它来访问它sails.express.app并做你的事情,比方说config/bootstrap.js:

    var express = require('express');

    ...

    sails.express.app.use(express.static(process.cwd() + '/app'));


小智 5

我正在使用 Sails.js v0.12.4。http.js 使用module.exports.http而不是module.exports.express 我执行了以下操作来提供另一个文件夹,例如现有/assets文件夹。在我提供app文件夹的示例中,将'node_modules/bootstrap/dist'路径替换为/app

config/http.js在我添加的文件中

var express = require('express');
Run Code Online (Sandbox Code Playgroud)

然后在middleware对象中我添加了 Express static 模块。我想提供我的node_modules文件夹中包含的引导资源。

bootstrapAssets: express.static('node_modules/bootstrap/dist'),
Run Code Online (Sandbox Code Playgroud)

然后在order数组中,我'bootstrapAssets'按照我希望该中间件运行的顺序添加了 。这是完整的代码:

var express = require('express');

module.exports.http = {

  middleware: {

    passportInit    : require('passport').initialize(),
    passportSession : require('passport').session(),

    bootstrapAssets : express.static('node_modules/bootstrap/dist'),


    order: [
      'startRequestTimer',
      'cookieParser',
      'session',
      'bootstrapAssets',
      'passportInit',
      'passportSession',
      'myRequestLogger',
      'bodyParser',
      'handleBodyParserError',
      'compress',
      'methodOverride',
      'poweredBy',
      '$custom',
      'router',
      'www',
      'favicon',
      '404',
      '500'
    ],
Run Code Online (Sandbox Code Playgroud)

现在,在我的 HTML 中,我可以使用以下命令访问 bootstrap css:

<link rel="stylesheet" href="/css/bootstrap.min.css">
Run Code Online (Sandbox Code Playgroud)