Ho una raccolta multi-livello di file .html, .js, .png, .css, etc in un sito. Una sbirciatina al mio sito hiearchy sia simile alla seguente:Node.js + Serve file statici con 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
...
...
sto migrando questo per l'esecuzione con Node.js. Mi è stato detto che DEVO usare RESTIFICA. Attualmente, ho scritto quanto segue per il mio server:
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;
}
Con questo codice, posso caricare con successo index.html. Tuttavia, il mio file index.html fa riferimento a JavaScript, file di immagini e fogli di stile. Vedo tramite Fiddler che questi file vengono richiesti. Tuttavia, nella mia finestra della console node.js, non vedo mai "Returing [js | css | nomefile png]". È come il mio server web node.js restituisce index.html e basta.
Cosa sto sbagliando?
Non riesco a vedere il punto nel usando 'restify' se si sta aggiungendo funzionalità non resto come file statici di servire. 'express' offre tutto ciò di cui hai bisogno e di più, con l'aggiunta di documenti migliori, comprovata stabilità nella produzione e supporto della community. – srquinn