跳至主要內容

http 模块

望间代码Node.js大约 2 分钟

http 模块

创建 web 服务器的模块

IP 地址

每台计算机的唯一地址

IP 地址一般采用点分十进制

格式为 (a, b, c, d),a、b、c、d 都是 0~255 之间的整数

本机地址的 IP 地址:127.0.0.1

域名

IP 地址的别名

IP 地址与域名的对应关系存储在一台服务器上,这台服务器就是域名服务器(DNS)

本机地址的域名:localhost

端口号

端口号就相当于一栋大厦的房间号,电脑就是这栋大厦

每台电脑都有成千上万的端口

每个端口都只能被一个 WEB 服务器占用

80 端口可以被省略

创建服务器

步骤

  1. 导入 http 模块
const http = require("http");
  1. 创建 WEB 服务器实例
const server = http.createServer();
  1. 为服务器实例绑定 request 事件,监听客户端请求
server.on("request", (req, res) => {});
  1. 启动服务器
server.listen(8080, () => {});

参数

  • req:访问与客户端相关的数据和属性

    • url:客户端访问的路径
    • method:客户端请求的 method 类型
    • headers:获取请求头对象
  • res:访问与服务器相关的数据和属性

    • end(str):向客户端发送指定的内容,并接受这次请求的处理过程

      只能返回 String 或 Buffer 类型数据

    • writeHeader:自定义回应头信息

      res.writeHeader(404, "Not found", {
        "Content-Type": "text/html; charset=utf-8",
      });
      
    • setHeader:设置响应头 > 处理中文乱码
      res.setHeader('Content-Type','text/html; charset=utf-8

    • write:给客户端发送响应数据

      res.write("Hello World!");
      

搭建服务器读取文件

const http = require("http");
const path = require("path");
const fs = require("fs");

const server = http.createServer();
server.on("request", (req, res) => {
  res.setHeader("Content-Type", "text/html;charset=utf-8");

  const url = req.url;
  const fpath = path.join(__dirname, url);

  fs.readFile(fpath, (err, dataStr) => {
    console.log(err, dataStr);
    if (err) {
      return res.end("404 Not found");
    } else {
      return res.end(dataStr);
    }
  });
});
server.listen(4050, () => {});
//引入
var http = require("http");
var fs = require("fs");
//创建服务器
var server = http.createServer();

var flieDir = "E:/Profession/project/WWW/Dome";
//响应
server.on("request", function (req, res) {
  //读取访问文件
  fs.readFile("../index.html", function (err, data) {
    if (err) {
      return res.end("404 Not Found!");
    } else {
      fs.readdir(flieDir, function (err, files) {
        if (err) {
          return res.end("读取发生错误!");
        } else {
          var content = "";
          //遍历循环文件夹中的内容
          files.forEach(function (item) {
            //生成需要替换的内容
            content += `
                            <tr>
                                <td data-value="css/">
                                    <a class="icon dir" href="/E:/Profession/project/WWW/Dome/css/">${item}</a>
                                </td>
                                <td class="detailsColumn" data-value="0"></td>
                                <td class="detailsColumn" data-value="1576119370">2019/12/12 上午10:56:10</td>
                            </tr>
                        `; //在 es6 中可以用 ${} 来引用变量
          });
          // console.log(files);
          data = data.toString();
          //替换
          data = data.replace("^_^", content);
          //发生响应
          res.end(data);
        }
      });
    }
  });
});
//启动服务器
server.listen(8080, function () {
  console.log("Server is Running");
});
上次编辑于:
贡献者: ViewRoom