html - Node JS 使用 css 提供 html 文件
问题描述
我正在练习纯节点 js,我遇到了一件让 http 协议感到不安的事情。经过一个小时左右的搜索和测试我的代码后,我终于用 css 为我的 html 页面提供了服务。这是我的代码:
const server = http.createServer((req, res)=>{
if(req.url === "/"){
fs.readFile("index.html", "UTF-8", function(err, data){
res.writeHead(200, {"Content-Type": "text/html"});
res.end(data);
});
}else if(req.url === "/styles.css")){
var cssPath = path.join(__dirname, 'public', req.url);
var fileStream = fs.createReadStream(cssPath, "UTF-8");
res.writeHead(200, {"Content-Type": "text/css"});
fileStream.pipe(res);
};
});
但我不明白它为什么起作用。好吧,我只在浏览器中输入了“/”,没有输入“/styles.css”。以及为什么我在 URL 栏中看不到“/styles.css”。我确定这是因为 http 协议的设计方式,但您能帮忙解释一下这个协议吗?先感谢您。
解决方案
如果您/styles.css
在地址栏中键入,那么您将看到 CSS 文件的源代码。例如:这个链接。
您键入/
,然后浏览器请求服务器,/
服务器以 HTML 文档响应。
然后浏览器呈现 HTML 文档。我假设 HTML 文档包括以下内容:
<link rel=stylesheet href=/styles.css>
因此,浏览器向服务器请求,服务器/styles.css
以 CSS 文件响应。然后浏览器将该 CSS 应用于 HTML 文档。
它没有显示/styles.css
在地址栏中,因为您正在查看/
. CSS 文件只是完全呈现所代表的 HTML 文档所需的不同资源/
。
推荐阅读
- php - 如何回显 json_decode 数组?
- certificate - 安装屏蔽数字证书
- extjs - 选择选取器未在移动模式下启动边缘选取器
- java - 系统中的通知声音已静音
- sign - 文件自签名后已被修改或损坏!(数据)
- python - (导入错误)由于尝试安装 gensim.models,因此无法使用 pip 安装软件包
- c++ - 如何将 Void* 转换为 size_t?
- node.js - NodeJS如何获取返回400 Bad Request的请求正文
- google-fit - 用户在特定时间的速度数据
- javascript - 如何使用javascript查找与字段匹配的项目?