Node.js HTTP文件

服务基础HTML

以下部分显示了如何创建一个简单的Web服务器,从文件夹返回HTML文件。

创建一个简单的HTML文件,名为index.html,我们计划返回在服务器上的每个请求GET'/'。

  1.  
  2.  
  3. You are looking lovely!
  4.  
  5.  

以下代码显示如何向客户端提供静态html文件。

  1. var http = require("http");
  2. var fs = require("fs");
  3. function send404(response) {
  4. response.writeHead(404, { "Content-Type": "text/plain" });
  5. response.write("Error 404: Resource not found.");
  6. response.end();
  7. }
  8. var server = http.createServer(function (req, res) {
  9. if (req.method == "GET" && req.url == "/") {
  10. res.writeHead(200, { "content-type": "text/html" });
  11. fs.createReadStream("./public/index.html").pipe(res);
  12. } else {
  13. send404(res);
  14. }
  15. }).listen(3000);
  16. console.log("server running on port 3000");

如果启动服务器(运行节点server.js)并在http://localhost:3000上打开浏览器,你将看到我们之前创建的HTML页面。

服务目录

首先,创建一个简单的客户端JavaScript文件,在HTML加载完成后附加到正文。

我们计划从服务器请求此JavaScript文件。

  1. window.onload = function () {
  2. document.body.innerHTML += "Talk JavaScript with me";
  3. }

通过在< head>中添加脚本标记,加载客户端JavaScript文件,以修改我们的简单HTML文件。

为了支持这个JavaScript加载,我们需要使用path模块来解析基于request.url属性的文件系统上的文件的路径。

我们还需要看看我们是否有为请求的文件类型注册的MIME类型。

我们必须确保该文件存在,然后尝试从文件系统读取它。

这是向客户端提供文件夹的源代码。

  1. var http = require("http");
  2. var fs = require("fs");
  3. var path = require("path");
  4. function send404(response) {
  5. response.writeHead(404, { "Content-Type": "text/plain" });
  6. response.write("Error 404: Resource not found.");
  7. response.end();
  8. }
  9. var mimeLookup = {
  10. ".js": "application/javascript",
  11. ".html": "text/html"
  12. };
  13. var server = http.createServer(function (req, res) {
  14. if (req.method == "GET") {
  15. var fileurl;
  16. if (req.url == "/")
  17. fileurl = "/index.html";
  18. else
  19. fileurl = req.url;
  20. var filepath = path.resolve("./public" + fileurl);
  21. var fileExt = path.extname(filepath);
  22. var mimeType = mimeLookup[fileExt];
  23. if (!mimeType) {
  24. send404(res);
  25. return;
  26. }
  27. fs.exists(filepath, function (exists) {
  28. if (!exists) {
  29. send404(res);
  30. return;
  31. };
  32. res.writeHead(200, { "content-type": mimeType });
  33. fs.createReadStream(filepath).pipe(res);
  34. });
  35. } else {
  36. send404(res);
  37. }
  38. }).listen(3000);
  39. console.log("server running on port 3000");