我在一個站點中有多級集合的.html,.js,.png,.css等文件。在我的網站hiearchy偷看看起來如下所示:Node.js +用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
...
...
我正在遷移它以在Node.js下運行。我被告知我必須使用RESTIFY。目前,我已經爲我的服務器編寫了以下代碼:
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;
}
通過此代碼,我可以成功加載index.html。但是,我的index.html文件引用了一些JavaScript,圖像文件和樣式表。我可以通過Fiddler看到這些文件正在被請求。但是,在我的node.js控制檯窗口中,我從來沒有看到「Returing [js | css | png filename]」。它就像我的node.js web服務器返回index.html,就是這樣。
我在做什麼錯?
我看不到的點,如果要添加非休息的功能,如靜態文件服務使用'restify'。 'express'提供您需要的所有內容和更多內容,增加更好的文檔,經過驗證的生產穩定性和社區支持。 – srquinn