静态资源文件请求处理

导入内置模块

1
2
3
const http = require('http'),
url = require('url'),
fs = require('fs');

创建服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var server1 = http.createServer(function (req, res) {
//解析客户端请求地址中的文件目录名称以及传递给当前服务器的数据
var urlObj = url.parse(req.url, true),
pathname = urlObj["pathname"], //请求的路径名称
query = urlObj["query"]; //传递来数据的键值对形式

//处理静态文件资源的请求(HTML/CCS/JS/...) => "前端路由" => (判断不同请求响应不同信息)
var reg = /\.(HTML|JS|CSS|JSON|TXT|ICO)/i;
if (reg.exec(pathname)) {
//获取请求文件的后缀
var suffix = reg.exec(pathname)[1].toUpperCase();
// console.log(suffix);
//根据请求文件的后缀名获取到当前文件的MIME类型 浏览器会按照代码的MIME类型进行渲染
// MIME类型:HTML -> "text/html" css->"text/css" TXT->"text/palin" 。。。
var suffixMIME = "text/plain"; //设置默认MIME类型
switch (suffix) {
case "HTML":
suffixMIME = "text/html";
break;
case "CSS":
suffixMIME = "text/css";
break;
case "JS":
suffixMIME = "text/javascript";
break;
case "JSON":
suffixMIME = "application/json";
break;
case "ICO":
suffixMIME = "application/octet-stream";
break;
}

// if (pathname === "/index.html") {
// var con = fs.readFileSync('./index.html', 'utf-8');
// res.end(con);
// }
// if (pathname === "/css/index.css") {
// con = fs.readFileSync('./css/index.css', "utf-8");
// res.end(con);
// }
// if (pathname==="/js/index.js") {
// con = fs.readFileSync('./js/index.js', 'utf-8');
// res.end(con);
// }
// 如果请求的资源不存在,不写try catch 会使服务停止运行,当加上后会捕获错误信息,即使请求资源不存在不会报错也不会终止服务
try {
//以上三个判断可简写为以下语句
// 按照指定目录读取文件中的内容或者代码(字符串格式)
var con = fs.readFileSync('.' + pathname, 'utf-8');
// 重写响应头信息:告诉客户端浏览器返回的是什么MIME类型,并指定返回内容格式为UTF-8编码格式
res.writeHead(200, {'content-type':suffixMIME+'charset=utf-8'});
// 服务端向客户端返回内容(字符串格式)
res.end(con);
} catch (e) {
res.writeHead(404, { 'content-type': 'text/plain;charset=utf-8;' });
res.end('request file is not found!');
}
}


});

为当前服务配置端口并监听

1
2
3
server1.listen(5555, function () {
console.log("server is success,listening on 5555 port!");
});
Fang Zhen wechat
有事微信联系~
我滴要饭の账号(💚一分也是爱💚)
-------------The End-------------
0%