Маршрутизация и шаблоны flatiron.js с объединением, директором и пластинами?

Исходя из express.js, я хочу попробовать flatironдля небольшого проекта. Тем не менее, есть небольшие проблемы, которые мешают мне на самом деле добиться чего-то.

var flatiron = require('flatiron')
,  session = require('connect').session
,  ecstatic = require('ecstatic')
,  path = require('path')
,  fs = require('fs')
,  plates = require('plates')
,  director = require('director')
,  winston = require('winston')
,  union = require('union');

var router = new director.http.Router();
var server = union.createServer({
  before: [
    ecstatic(__dirname + '/public')
  ]
});

router.get('/', function () {
  var self = this;
  fs.readFile('public/layout.html', 'utf-8', function(err, html) {
    [...]
  })
});

server.listen(3000, function () {
  console.log('Application is now started on port 3000');
});

Как работает маршрутизация с директором? Когда я оставляю ecstaticвыключенным, я могу определить маршруты, такие как '/', и это работает, но тогда я не получаю статический контент CSS и JS. В ecstatic / заменяется на 'index.html', а ecstatic имеет приоритет над всеми определенными маршрутами. - То же самое с connect-static. Маршрут (/) заменяется на index.html.

Я также попробовал другой подход, используя промежуточное ПО для подключения, но он не работает:

var flatiron = require('flatiron')
,  connect = require('connect')
,  path = require('path')
,  fs = require('fs')
,  plates = require('plates')
,  app = flatiron.app;

app.use(flatiron.plugins.http);
app.use(connect.favicon());
app.use(connect.static(__dirname + '/public'));
app.use(connect.directory(__dirname + '/public'));
app.use(connect.cookieParser('my secret here'));
app.use(connect.session({'secret': 'keyboard cat'}));

app.router.get('/', function () {
  console.log("GET /");
  var self = this;
  fs.readFile('public/layout.html', 'utf-8', function(err, html) {
    [...]
  })
});

app.listen(3000, function () {
  console.log('Application is now started on port 3000');
});

7
задан laser 20 June 2017 в 11:21
поделиться