开始我的第一个node.js项目,我发现我的代码呈现的是没有样式的html,或者css代码作为纯文本显示在屏幕上。我打开页面看到html代码,除了点击刷新之外什么都没做,我看到了css,每当我点击刷新时它就会来回切换。任何人都可以告诉我如何应用样式?谢谢。我的代码:
http.createServer(function (req, res) {
if(req.method.toLowerCase() == 'get'){
fs.readFile('path\\to\\index.html', function (err, data) {
if (err) console.log(err);
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
//res.end();
});
}
if(req.method.toLowerCase() == 'get'){
fs.readFile('path\\to\\mystyle.css', function (err, data1) {
if (err) console.log(err);
res.writeHead(200, {'Content-Type': 'text/css'});
res.write(data1);
//res.end();
});
}
}).listen(4000, '127.0.0.1');
console.log('Server running at http://127.0.0.1:4000/');
我将'res.end()注释掉的原因是当我离开其中一个或两个时,我得到一个'写完后'错误。但我认为我的问题在某处?
编辑:只是添加,如果我删除两个IF语句,我会遇到同样的问题。如果我将两个readFiles包含在同一个IF语句中,我会得到'写完后'。
答案 0 :(得分:0)
这最终有效:
var http = require('http');
var fs = require('fs');
var formidable = require("formidable");
var util = require('util');
var url = require('url');
var html;
fs.readFile(__dirname+'\\index.html', function(err, data) {
if (err){
console.log(err);
response.writeHead(404, {'Content-Type': 'text/html'});
}
html = data;
});
var css;
fs.readFile(__dirname+'\\mystyle.css', function(err, data) {
if (err){
console.log(err);
response.writeHead(404, {'Content-Type': 'text/html'});
}
css = data;
});
var js;
fs.readFile(__dirname+'\\management.js', function(err, data) {
if (err){
console.log(err);
response.writeHead(404, {'Content-Type': 'text/html'});
}
js = data;
});
var server = http.createServer(function (request, response) {
switch (request.url) {
case "/mystyle.css" :
response.writeHead(200, {"Content-Type": "text/css"});
response.write(css);
break;
case "/management.js" :
response.writeHead(200, {"Content-Type": "text/javascript"});
response.write(js);
break;
default :
response.writeHead(200, {"Content-Type": "text/html"});
response.write(html);
};
response.end();
})
server.listen(4000);
console.log('server is listening at 4000');
您可以轻松地将所有代码放在createServer函数中,但关键是切换。