你如何在node.js应用程序中提供CSS

时间:2016-07-10 19:28:12

标签: javascript node.js

我一直在搞乱node.js,我似乎无法正确地为我的CSS服务。以前,我把它嵌入我的HTML标签下的标题中,但现在我正在尝试学习如何将它作为一个单独的文件提供。

到目前为止,这就是我所做的。在添加服务器下的HTML加载之前,我尝试将其写入:

//This is all my main module

var http = require('http');
var router = require('./router.js');

var server = http.createServer(function (request, response) {

response.writeHead(200,{"Content-type" : "text/css"});
var fileContents = fs.readFileSync('./views/styles.css', {encoding: "utf8"}, function(err, data) {
 if (!err) {
   response.write(data);
} else {
  console.log(err);
}
});

  router.home(request, response);
  router.user(request, response);

});

server.listen(3000);

我在路由器模块中调用的home函数如下所示。它的工作原理也非常好:

function home(request, response) {
  //if url == "/" && GET

if (request.url === "/"){
if(request.method.toLowerCase() === "get") {
  response.writeHead(200, commonHeaders);
  renderer.view("header", {}, response);
  renderer.view("search", {}, response);
  renderer.view("footer", {}, response);
  response.end();

} else {
    //if url == "/" && POST
//redirect to /:username

  request.on("data", function(postBody) {
    var query = querystring.parse(postBody.toString());
    response.writeHead(303, {"Location":"/" + query.username});
    response.end();
  });
  }
 }
}

我的所有HTML加载完全正常。如果我在chrome中使用我的开发工具,它表明我已经创建了一个带有styles.css文件的单独文件夹,但它是空的。它是如何创建我的文件的,但我的CSS没有写在那里?

我这样做是错的吗?我的HTML标题中也链接了样式表。你如何在node.js应用程序中提供CSS?我不知道为什么这不起作用。

1 个答案:

答案 0 :(得分:3)

  

我的所有HTML加载完全正常。如果我在chrome中使用我的开发工具,   它表明我已经创建了一个带有styles.css文件的单独文件夹   它,但它是空的。它是如何创建我的文件的,但我的CSS不是   写在那里?

可能是因为fs.readFileSync是同步的,但错误地为它提供了回调。试试这个:

response.writeHead(200, {'Content-type' : 'text/css'});
var fileContents = fs.readFileSync('./views/styles.css', {encoding: 'utf8'});
response.write(fileContents);
response.end();
  

我这样做是错的吗?我在标题中链接了一个样式表   我的HTML也是。你如何在node.js应用程序中提供CSS?

错误是一个强有力的词,但是,以这种方式手动提供静态文件不是最好的主意,它可能无法扩展。您应该做的是配置您的Web服务器以提供所有静态文件,并且仅处理Node.js中的动态内容。我不会涉及具体细节,而是在Stack Overflow上询问另一个问题,指定您正在运行的服务器以及如何使用Node.js正确配置它。或者,您可以查看一些有关如何使用NGINX服务器运行Node.js的教程 - 这应该可以让您走上更加可持续的道路。

我希望有所帮助!