搭建静态资源服务器

89 阅读1分钟

静态资源服务器就是一种专门用于存储和提供静态文件(如 HTML、CSS、JavaScript、图片、字体等)的服务器。它的主要功能是响应客户端(如浏览器)的请求,并将这些静态文件发送给客户端,供其渲染或使用。

例如:

image.png 示例

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

async function getStat(filename) {
    try {
        return await fs.promises.stat(filename);
    } catch {
        return null;
    }
}
/***
得到要处理的文件内容
*/
async function getFileContent(url) {
    const urlObj = URL.parse(url);
    let filename; // 要处理的文件路径
    filename = path.resolve(__dirname, "public", urlObj.pathname);
    let stat = await exists(filename);
    if (!stat) {
    //文件不存在
       return null;
    } else if (stat.isDirectory()) {
    // 文件是一个目录
    filename = path.resolve(
        __dirname,
        "public",
        urlObj.pathname.substr(1),
        "index.html"
    );
    stat = await getStat(filename);
    if(!stat) {
        return null;
    } else {
      return await fs.promise.readFile(filename);
    }
   }else {
    return await fs.promise.readFile(filename);
   }
}

async function handler(req, res) {
    const info = await getFileContent(req.url);
    if (info) {
        res.write(info);
    } else {
        res.statusCode = 404;
        res.write("Resource is not exist");
    }
    res.end();
}

const server = http.createServer(handler);

server.on("listening", () => {
    console.log("server listen 6000");
});

server.listen(6000);