要点:
1.通过引入核心模块,来进行文件的读取和服务器的创建,并调用相应模块的API,进行想要的操作。
2.不同的文件类型进行不同的解析,主要通过Content-Type(多用途互联网邮件拓展)进行不同的定义,如html对应text/html,注意编码方式的声明,服务器默认是utf-8,但是浏览器编码方式是跟当前操作系统是一致的,win10中文操作系统是gbk编码方式,所以会造成乱码。
3.通过node启动服务器后,修改了被读取的文件,不需要重启服务器,因为他是动态读取文件的,通过之前建立的联系。
代码:
var http = require('http');
var fs = require('fs');
// 引入两个核心库
var server = http.createServer();
server.on('request',function(req,res){
var url = req.url;
// 获取输入的请求字符串url
if(url === '/'){
//‘/’后是请求的路径
fs.readFile('./reource/halloword.html',function(err,data){
if(err){
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');
// 注意和上面个text/plain的区别,通过text/html声明html类型文件
res.end(data);
}
});
}else if(url === '/pushu'){
fs.readFile('./reource/pushu.jpeg',function(err,data){
if(err){
res.setHeader('Content-Type','text/plain; charset=utf-8');
res.end('老哥,没读出来,是不是路径或者文件名写错了啊');
}else{
//data存取的是读取到的内容,是二进制的数据,通过toString转为字符串
//res.end()支持两种格式,二进制格式和字符串类型
res.setHeader('Content-Type','image/jpeg');
// 图片反而不能声明utf-8编码格式他有特定的编码格式
res.end(data);
}
});
}
});
server.listen(3000,function(){
console.log('老哥,安排好了');
});
启动服务器;
在浏览器中请求效果: