📌  相关文章
📜  如何创建一个简单的 Web 服务器,可以通过“readFile”函数读取给定磁盘上的给定文件?(1)

📅  最后修改于: 2023-12-03 15:08:28.260000             🧑  作者: Mango

如何创建一个简单的 Web 服务器可通过“readFile”函数读取给定磁盘上的给定文件

简介

本文旨在介绍如何创建一个简单的Web 服务器,该服务器使用 Node.js 的 http 模块和 fs 模块。 服务器可以读取给定磁盘上的给定文件,并将其发送到客户端浏览器。

安装 Node.js

在开始本文之前,你需要安装 Node.js。你可以在 官方网站 上下载安装程序。安装完成后,你可以输入以下命令,检查 Node.js 是否安装成功。

node -v

如果输出 v12.16.1 或类似,则意味着安装成功。

创建一个简单的网站

我们将从创建一个包含静态 HTML 和 CSS 文件的简单网站开始。你可以在当前路径创建一个名为 index.html 的文件,并将以下内容添加到文件中。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>My Website</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <h1>Welcome to My Website</h1>
    <p>This is my first website.</p>
  </body>
</html>

我们还需要创建一个名为 style.css 的 CSS 文件,并将以下内容添加到文件中。

body {
  background-color: #f0f0f0;
}

h1 {
  color: #ff0000;
}

现在我们的网站已经准备好了。

创建一个没有读取文件的简单Web服务器

首先,我们将创建一个简单的Web服务器,并返回"Hello, World!"。要创建Web服务器,可能会使用 Node.js 提供的 http 模块。创建一个名为 server.js 的文件,并将以下代码添加到文件中。

const http = require('http')

const server = http.createServer(function (request, response) {
  response.writeHead(200, { 'Content-Type': 'text/plain' })
  response.end('Hello, World!\n')
})

server.listen(3000)
console.log('Server running at http://127.0.0.1:3000/')

代码中的 createServer 方法将创建一个HTTP服务器,并将每个请求的处理程序传递给它。 该处理程序函数的每个参数是 http.IncomingMessagehttp.ServerResponse 对象。通过响应头中设置的 Content-Type 我们告诉浏览器,服务器将返回 text/plain 类型的数据。

我们可以通过以下命令运行Web服务器。

node server.js

现在可以通过 http://127.0.0.1:3000/ 访问网站,我们将在浏览器中看到 "Hello, World!"。

阅读给定磁盘上的文件

让我们继续阅读我们的网站,为此我们需要更改服务器以从磁盘上的文件读取网页并将其发送到客户端浏览器。 为此,我们使用 fs 模块从磁盘上读取文件内容,并使用 response.end 方法将内容发送到客户端浏览器。

我们将在 server.js 中添加以下内容。

const http = require('http')
const fs = require('fs')

const server = http.createServer(function (request, response) {
  if (request.url === '/') {
    fs.readFile('index.html', function (error, content) {
      if (error) {
        response.writeHead(500)
        response.end('Sorry, check with the site admin for error: ' + error.code + ' ..\n')
      }
      else {
        response.writeHead(200, { 'Content-Type': 'text/html' })
        response.end(content, 'utf-8')
      }
    })
  }
  else {
    response.writeHead(404)
    response.end('Page not found\n')
  }
})

server.listen(3000)
console.log('Server running at http://127.0.0.1:3000/')

如果发现请求的URL为空,则此代码从磁盘上的 index.html 文件中读取内容,并将内容作为HTML响应发送到浏览器。 如果文件不存在或存在其他问题,则将返回 500 状态码。

我们可以运行Web服务器,并访问网站,我们期望看到 “Welcome to My Website” 和“ This is my first website” 的文本以及原始CSS样式。

结论

本文提供了一种简单的方法来创建 Web 服务器,并能够从磁盘上的文件中读取内容。 读者还可以使用其他框架,例如 Express.js 来更轻松地构建更强大的 Web 应用程序。