javascript - 使用 node.js 提供带有 CSS 和 JS 的基本网页包括

标签 javascript html node.js mime

我来自(传统的)服务器端脚本 (PHP) 背景,我正在尝试使用 Node 进行试验,看看有什么大惊小怪的。

目标:提供一个带有一些样式表和脚本的简单网络文档。

我的 node.js 脚本:

var http = require('http');
var fs = require('fs');

fs.readFile('index.html', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) { 
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(1337, '127.0.0.1');
});

index.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8'> 
        <title>Node.js test</title>
        <link rel="stylesheet" media="screen" type="text/css" href="css/plugin.css" />
        <link rel="stylesheet" media="screen" type="text/css" href="css/xGrid.css" />
        <link rel="stylesheet" media="screen" type="text/css" href="css/jquery-ui/jquery-ui-1.10.1.custom.min.css" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
        <script src="js/slate.js"></script>
        <script src="js/slate.portlet.js"></script>
        <script src="js/slate.message.js"></script>
        <script src="js/plugin.js"></script>
    </head>
    <body>
        <h1 class="styled-h1">Test</h1>
    </body>
</html>

我遇到的问题:

来自 Google CDN 的两个脚本包含被很好地加载到文档中。但是,从我的本地文件系统调用的所有其他样式表或脚本都被解释为 text/html,因此没有达到预期的效果。这是 Google Chrome 控制台的屏幕截图:

enter image description here

我想了解为什么会这样。

PS:我知道我可以使用像 Express 这样的框架来简化事情,但我想先掌握基础知识。

最佳答案

很简单:您始终将 Content-Type header 设置为 text/html。此外,它将始终 为您的 index.html 文件提供服务。看:

fs.readFile('index.html', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) { 
        response.writeHeader(200, {"Content-Type": "text/html"});  // <-- HERE!
        response.write(html);  // <-- HERE!
        response.end();  
    }).listen(1337, '127.0.0.1');
});

您应该解析 URL,查找您需要的文件,读取其内容并将其写入响应(如果存在),否则会出现 404 错误。此外,您还需要设置正确的 header 。

那么,你还想自己动手吗?
至少,尝试像 send 这样的东西, 这是一个基本的静态文件服务器。

关于javascript - 使用 node.js 提供带有 CSS 和 JS 的基本网页包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478566/

相关文章:

javascript - 在 geo div 中,如何添加 else show #other-country

node.js - 浏览器客户端无法接收消息

node.js - 在 Mac 上的 Jenkins 上配置 Node.Js

javascript - Apple M1 芯片上的随机 "Assertion failed"错误

javascript - 将值从模态传递到主窗体

javascript - window.open 在 Firefox 中不工作

javascript - HTML/CSS/JS 悬停时显示gif,什么是gif?

javascript - document.all [""+ object.getAttribute ("EndDate", true) + ""].value;不能在 Firefox 中工作

javascript - PHP服务器只接受部分图片,跨域

javascript - Web开发刷新后显示/隐藏 <div>