Node.js呈现html或css,而不是两者

时间:2016-02-24 13:02:57

标签: html css node.js

开始我的第一个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语句中,我会得到'写完后'。

1 个答案:

答案 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函数中,但关键是切换。