Pochodzę z pliku express.js, chcę dać flatiron wypróbować mały projekt. Są jednak pewne drobne problemy, które uniemożliwiają mi dotarcie.routing flatiron.js i tworzenie szablonów za pomocą związków, reżyserów i tablic?
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');
});
Jak działa routing z reżyserem? Kiedy wychodzę z ecstatic, mogę zdefiniować trasy takie jak "/" i to działa, ale wtedy nie otrzymam statycznej zawartości CSS i JS. Z ekstatycznym/jest zamieniany na "index.html", a ekstatyczny ma priorytet nad wszystkimi zdefiniowanymi trasami. - To samo zachowanie w przypadku połączenia statycznego. Route (/) zostaje zastąpione przez index.html.
Próbowałem też inne podejście używając connect middleware, który nie działa:
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');
});
Dzięki dla ustalenia tego. To jest takie dziwne i słabo udokumentowane! –
Dzięki za opublikowanie tego, przegapiłem część connect.static(). – Zacho