使用Node来简单结合fs模块来访问不同资源实例

简单结合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
const http = require('http');
const fs = require('fs');
const server = http.createServer();
server.on('request', (req, res) => {
const url = req.url;
if (url === '/') {
fs.readFile('./resource/index.html', (error, data) => {
if (error) {
res.setHeader('Content-Type', 'text/plain,charset=utf-8');
res.end('文件读取失败,请稍后再试');
} else {
// data 默认是 二进制数据, 可以通过 toString 转换为咱们能识别的字符串
// res.end() 支持俩种数据格式 一种是 二进制, 一种是 字符串
res.setHeader('Content-Type', 'text/html,charset=utf-8');
res.end(data);
};
});
} else if (url === '/images') {
fs.readFile('./resource/images/3.jpg', (error, data) => {
if (error) {
res.setHeader('Content-Type', ' text/plain,charset=utf-8');
res.end('图片读取失败,请稍后再试');
} else {
// 注意:尽量图片尽量不要跟编码格式,它有自己独有的编码格式
res.setHeader('Content-Type', ' image/jpeg');
res.end(data);
};
});
}

});
server.listen(3000, () => {
console.log('服务器启动成功,可以通过 http://127.0.0.1:3000/ 来访问');

})
简化了以上的代码

运用了逆向思维,这样可以不用一一对应的把每个文件读出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const http = require('http');
const fs = require('fs');
const server = http.createServer();
server.on('request', (req, res) => {
let url = req.url;
let wwwDir = 'F:/nodejs/Node_test/resource';
let filePath = '/index.html';
// 默认的 是 / 所以 客户端中出现的就是 /index.html 这个文件内容
if (url !== '/') {
filePath = url;
};
fs.readFile(wwwDir + filePath, (err, data) => {
if (err) {
return res.end('404 Not Found.');
}
res.end(data);
});

});
server.listen(3000, () => {
console.log('服务器启动成功,可以通过 http://127.0.0.1:3000/ 来访问');
});