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