- req.url 可以获取对应的路径
- 一般在node.js中我们获取路径的时候,一般不写对应的主机地址以及端口号
例如如果地址是127.0.0.1:3000/fang,我们就写成/fang
- 一般在node.js中我们获取路径的时候,一般不写对应的主机地址以及端口号
- 当我们想要返回一个页面的时候,我们不能直接通过end返回。
因为end中只能设置字符串和二进制,我们可以借助一个 fs 的包。
这个包可以导入。然后通过这个包来读取对应的文件,读取文件后会有对应的返回的数据,返回数据就是一个二进制
- 当我们想要返回一个页面的时候,我们不能直接通过end返回。
- 读取文件的方法 readFile()
这个方法有两个参数,
第一个参数表示对应的文件的路径(我们使用相对路径)(./表示当前目录);
第二个参数表示对应的回调的数据
回调中有两个参数,
第一个参数表示错误;
第二个表示对应的数据
- 读取文件的方法 readFile()
-
- 当在一个页面中有对应的资源文件的时候,当请求这个页面的时候,资源文件会自动发送请求,所以会出现对应的打圈的状态
凡是属于资源文件我们在node.js中都需要处理对应的请求
资源文件: .html、图片、 css 、js
设置对应的路径来处理对应的请求,读取对应的文件把它返回
当返回的是图片的时候,一般设置对应的响应头中的响应格式为image/jpg
- 需求1:
当我们访问到/fang路径的时候,显示返回一个方字
如果我们访问到对应的/yuan路径的时候,显示返回一个圆字
/*需求:当我们访问到/fang路径的时候,显示返回一个方
* 如果我们访问到对应的/yuan路径的时候,显示返回一个圆*/
var http = require('http');
var server = http.createServer(function (req, res) {
/*解决方法:就是判断对应的路径,如果是/fang就返回方
* 如果是/yuan就返回圆*/
/*我们可以通过req获取对应的路径:req.url可以获取对应的路径
一般在node.js中我们获取路径的时候,一般不写对应的主机地址以及端口号
例如如果地址是127.0.0.1:3000/fang,我们就写成/fang
*/
if (req.url == '/fang'){
res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
res.end('方');
}else if(req.url == '/yuan'){
res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
res.end('圆');
}
});
server.listen(3000,'127.0.0.1');
- 需求2:
当访问/fang的时候,显示一个xixi的页面 ,
当访问/yuan的时候显示一个haha的页面
/*需求:当访问/fang的时候,显示一个xixi的页面 ,当访问/yuan的时候显示一个haha的页面*/
var http = require('http');
//导入fs包
var fs = require('fs');
var server = http.createServer(function (req, res) {
if(req.url == '/fang'){
/*当我们想要返回一个页面的时候,我们不能直接通过end返回
* 因为end中只能设置字符串和二进制
* 解决:我们可以借助一个fs的包,这个包可以导入然后通过这个包来读取对应的文件
* 读取文件后会有对应的返回的数据,返回数据就是一个二进制*/
/*读取文件然后返回对应的数据
* readFile:这个方法有两个参数,第一个参数表示对应的文件的路径
* 第二个参数表示对应的回调的数据,回调中有两个参数,第一个参数表示错误
* 第二个表示对应的数据
* 我们使用相对路径
* ./:表示当前目录*/
fs.readFile('./html/xixi.html',function (err, data) {
// 容错性处理
if (err) {
throw err;
return;
}
res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
res.end(data);
});
}
else if(req.url == '/yuan'){
fs.readFile('./html/haha.html',function (err, data) {
if (err){
throw err;
return;
}
res.writeHead(200,{'Content-Type':'text/html;charset=UTF-8'});
res.end(data);
});
}
});
server.listen(3000,'127.0.0.1');
- 需求3:图片和css文件的请求。
资源文件中有图片和css文件,当请求这个页面时,它们自动会发送请求,所以会出现打圈的现象。
凡是属于资源文件,在node.js中都需要处理对应的请求,设置对应的路径和对应的页面来处理对应的请求使其返回。
css文件要先导入.html文件
var http = require('http');
var fs = require('fs');
var server = http.createServer(function (req, res) {
if (req.url == '/fang'){
fs.readFile('./html/xixi.html',function (err, data) {
res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
res.end(data);
});
}
else if(req.url == '/yuan'){
fs.readFile('./html/haha.html',function (err, data) {
res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
res.end(data);
})
}
/*当在一个页面中有对应的资源文件的时候,当请求这个页面的时候,资源文件会自动发送请求
* 所以会出现对应的打圈的状态
* 凡是属于资源文件我们在node.js中都需要处理对应的请求
* 资源文件:.html 图片 css js
* 设置对应的路径来处理对应的请求,读取对应的文件把它返回*/
//路径一定要写得与读取路径的相同
else if(req.url == '/0.jpg'){
fs.readFile('./html/0.jpg',function (err, data) {
if(err){
throw err;
return;
}
/*当返回的是图片的时候,一般设置对应的响应头中的响应格式为image/jpg*/
res.writeHead(200,{'Content-Type':'image/jpg'});
res.end(data);
})
}
else if(req.url == '/bbb.css'){
fs.readFile('./html/bbb.css',function (err, data) {
/*我们返回的是css的时候,一般设置对应的响应头中的响应格式为text/css*/
res.writeHead(200,{'Content-Type':'text/css;charset=UFT8'});
res.end(data);
})
}
else {
res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
res.end('请求出错');
}
}
);
server.listen(3000,'127.0.0.1');