Mam wielopoziomową kolekcję plików .html, .js, .png, .css, itp. W witrynie. Rzut oka na mojej stronie hierarchi wygląda tak:Node.js + Pliki statyczne z RESTIFY
index.html
child1
index.html
page1.html
page2.html
...
child2
grandchild1
index.html
grandchild2
index.html
index.html
page1.html
page2.html
resources
css
myTheme.css
img
logo.png
profile.png
js
jquery.js
...
...
Jestem migracji to uruchomić pod Node.js. Powiedziano mi, że MUSZĘ używać RESTYFIKACJI. Obecnie napisałem na mój serwer:
var restify = require('restify');
var fs = require('fs');
var mime = require('mime');
var server = restify.createServer({
name: 'Demo',
version: '1.0.0'
});
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());
server.get('/', loadStaticFile);
server.get('/echo/:name', function (req, res, next) {
res.send(req.params);
return next();
});
server.listen(2000, function() {
console.log('Server Started');
});
function loadStaticFile(req, res, next) {
var filePath = __dirname + getFileName(req);
console.log("Returning " + filePath);
fs.readFile(filePath, function(err, data) {
if (err) {
res.writeHead(500);
res.end("");
next(err);
return;
}
res.contentType = mime.lookup(filename);
res.writeHead(200);
res.end(data);
return next();
});
}
function getFileName(req) {
var filename = "";
if (req.url.indexOf("/") == (req.url.length-1)) {
filename = req.url + "index.html";
} else {
console.log("What Now?");
}
return filename;
}
Za pomocą tego kodu mogę pomyślnie załadować plik index.html. Jednak mój plik index.html odwołuje się do niektórych skryptów JavaScript, plików obrazów i stylów. Widzę za pośrednictwem Fiddlera, że żądane są te pliki. Jednak w oknie konsoli node.js nigdy nie widzę "Returing [js | css | png filename]". To jak mój serwer WWW node.js zwraca index.html i to wszystko.
Co robię źle?
nie widzę sensu w użyciu 'restify' jeśli dodajesz niż możliwości reszta jak plik statyczny podaniem. 'express' oferuje wszystko, czego potrzebujesz i więcej, z dodatkiem lepszych dokumentów, sprawdzonej stabilności w produkcji i wsparcia społeczności. – srquinn