nodejs创建web服务器

web服务器介绍

web服务器一般指网络服务器,是指驻留于因特网上某种类型计算机程序,可以向浏览器等web客户端提供文档,也可以放置网站,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个web服务器是Apache Nginx IIS

nodejs创建web服务器

const http = require("http");

http

  .createServer((req, res) => {

    res.writeHead(200, { "Content-Type": "text/html;charset='utf-8'" });

    res.write("你好,nodejs");

    res.end();

  })

  .listen("8000");

实现静态web服务

思路:获取文件路径,将文件返回给浏览器。

const http = require("http");

const fs = require("fs");

http

  .createServer((req, res) => {

    let pathName = req.url; //获取路径

    if (pathName == "/") {

      //默认加载首页

      pathName = "/index.html";

    }

    if (pathName != "/favicon.ico") {

      //过滤'/favicon.ico',req.url是两个路径。

      //文件操作,获取static下面的index.html

      fs.readFile("static/" + pathName, function(err, data) {

        if (err) {

          //找不到指定文件

          console.log(err);

          return;

        } else {

          res.writeHead(200, { "Content-Type": "text/html;charset='utf-8'" });

          res.write(data);

          res.end();

        }

      });

    }

  })

  .listen("8000");

一个简单的web服务器创建完毕。

注意事项:此文件为server.js,static文件问当前文件夹下的文件。

存在问题,头文件设置是text/html,虽然能加载出其他文件,但是不能正常渲染

解决办法:根据文件改变请求头。

1、path模块var extname = path.extname("index.html")可输出.html

2、编写方法根据后缀名输出对应的头文件,

 function getMime(extname) {

  switch (extname) {

    case ".html":

      return "text/html";

    case ".css":

      return "text/css";

    case ".js":

      return "text/javascript";

    default:

      return "text/html";

  }

};

var mime = getMime(extname)

res.writeHead(200, { "Content-Type": `${mime};charset='utf-8'` });

除此之外可以使用mime.json文件改变头文件

思路找一个mime.json文件,使用readFileSync()读取json文件匹配头文件并返回

const fs = require("fs");

module.exports = function(extname) {

  var res = fs.readFileSync("./static/mime.json");

  console.log(JSON.parse(res.toString())[extname]);

  return JSON.parse(res.toString())[extname];

};

找不到文件,返回404页面


你可能感兴趣的:(nodejs创建web服务器)