node学习笔记1.0

//导入需要的模块
// 声明一个变量接收了http处理web服务模块
const http = require("http");
// 声明一个变量接收了fs处理文件系统模块
const fs = require("fs");
// 声明一个变量接收了path处理路径模块
const path = require("path");

//http操作创建web服务
//声明变量server接收http模块方法中的web服务器实例
const server = http.createServer();
//为web服务器实例的on对象绑定一个request事件,然后设置一个处理函数可以拿到参数:req,res
//req是客户端请求的对象的形参,里面包含客户端相关的属性和数据
//res是响应对象,在客户端请求后服务器通过res响应数据或属性给客户端
server.on("request", (req, res) => {
  //接收用户端请求req中的url地址
  const url = req.url;

  // 优化客户端请求的url路径
  //let fpath='';

  //把客户端请求过来的URL地址映射为具体文件的存放路径
  //原理就是拼接用户请求过来的req里的url地址
  const fpath = path.join(__dirname, url);
  // 然后调用fs文件处理模块根据上面拼接的url获取文件判断是否获取成功则响应到客户端
  //根据映射过来的文件路径读取文件内容
  fs.readFile(
    fpath,
    /*"utf8", 发现取消utf8后图片才能正常显示*/ (err, dataStr) => {
      //判断是否读取失败,失败则通过res响应错误的信息404
      if (err) return res.end("404 请求的页面不存在...");
      //判断没有读取失败则响应读取的内容到客户端
      res.end(dataStr);
    }
  );

  //设置默认的响应内容为:404 没有找到请求的内容
  //let content = "<h1>404 没有找到请求的内容...</h1>";

  //页面判断操作
  //判断用户请求的url是否为/或index.html首页
  //判断用户请求的url是否为about.html首页
  //if (url === "/" || url === "/index.html") {
  // content = "<h1>首页</h1>";
  //} else if (url === "/about.html") {
  //  content = "<h1>关于页</h1>";
  //}

  //响应操作
  //接收客户端请求req中的method类型
  const method = req.method;
  //接收客户端请求过来的url地址与method类型
  //${}是一种占位符
  const str_url = `正在请求的url地址是:${url}`;
  const str_method = `\n正在请求的method类型是: ${method}`;

  //调用res中的setHeader方法解决响应中文数据到客户端乱码的问题
  //第一个参数为响应头:"Content-Type"值是:"text/html;charset=utf-8"
  //但是在响应html文件时使用后丢失html里的css与js
  //res.setHeader("Content-Type", "text/html; charset=utf-8");

  //在控制台输出客户端请求的url地址和method类型
  console.log(str_url, str_method);
  //调用res.end()方法:向客户端发送指定的数据内容,并结束这次请求的处理过程
  //向客户端发送str的文本内容
  //根据客户端请求的数据响应对应的html内容
  //res.end(`服务器响应过来的数据:<br>${str_url}<br>${str_method}<br>${content}`);

  console.log("服务器运行正常...");
});

//启动服务器
server.listen(9999, () => {
  console.log("web服务器已启动...");
  //在控制台输出可以访问当前wbe服务的域名IP和端口
  console.log("访问该服务器的IP域名和端口为: http://xxxxxxxxxx.com:9999");
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值