操作说明补充
pwd 当前路径用户命令
tab 自动补前
[] 是可选参数,建议加上;号
/liwei
1. 搭建静态资源服务器
const http = require('http');
const ip = '192.168.92.129';
const port = 3000;
var f=function(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('<html>');
res.write('<head>');
res.write('</head>');
res.write('<body>');
res.write('hello');
res.write('</body>');
res.write('</html>');
res.end();
}
var f2=function(){
console.log('server start');
}
http.createServer(f).listen(port,ip,f2);
2.url请求服务器
const http = require('http');
const url=require('url'); //
const ip = '192.168.92.129';
const port = 3000;
var f=function(req,res){
var pathname=url.parse(req.url).pathname;
res.write(pathname);
res.end();
}
var f2=function(){
console.log('server start');
}
http.createServer(f).listen(port,ip,f2);
3.文件读取
const http = require('http');
const url=require('url'); //
const fs=require('fs'); //
const ip = '192.168.92.129';
const port = 3000;
fs.readFile('xiaoniu.txt',(err,data) =>{
if (err) throw err;
console.log(data.toString());
});
var f=function(req,res){
var pathname=url.parse(req.url).pathname;
res.write(pathname);
res.end();
}
var f2=function(){
console.log('server start');
}
http.createServer(f).listen(port,ip,f2);
touch xiuniu.txt //创建文件
4.文件读取
const http = require('http');
const url=require('url'); //
const fs=require('fs'); //
const ip = '192.168.92.129';
const port = 3000;
// fs.readFile('xiaoniu.txt',(err,data) =>{
// if (err) throw err;
// console.log(data.toString());
// });
var data = fs.readFileSync('xiaoniu.txt');
var f=function(req,res){
var pathname=url.parse(req.url).pathname;
res.write(pathname + '\n');
res.write('\n');
res.write(data.toString());
res.end();
}
var f2=function(){
console.log('server start');
}
http.createServer(f).listen(port,ip,f2);
5.首先加载需要用到的模块
var http = require('http'); //加载httpe服务API模块
var ip = '192.168.92.129';
var fs=require('fs'); // 加载fs文件服务api模块
var server=new http.Server(); //创建新的HTTP服务器
var urlapi=require('url'); //创建url路由api模块
server.listen(3000,ip); //监听端口3000
//使用on方法注册事件处理,该事件一直被监听,任何的请求都 会进入回调函数,执行相应原操作
server.on('request',function(request,response){//当有request请求的时候触发处理函数
//解析请求的URL
var url =urlapi.parse(request.url);
//监听请求网站,以当前脚本目录为目录的URL地址
console.log(url,pathname);
//特殊URL会让服务器再发送响应前先等待
swith(url.pathname){
case '' || '/': //处理请求的网站根目录,指定加载的对应的文件夹,一般以根目录的index.html为默认,nodejs是高效流处理的方案,也可以通过配置文件来配置
fs.readFile("./index.html",function(err,content){
if(err){//输出错误信息,也可以自定义错误信息。
response.writeHead(404,{'Content-Type':'text/plain;charset="utf-8"'});
response.write(err.message);
response.end();
}else{//请求成功返回数据
response.writeHead(200,{'Content-Type':'text/plain;charset="utf-8"'}); //告诉相应头文件,返回数据的类型。
response.write(content); //返回的内容,有时候还会加buter数据类型
response.end(); //结束响应,不写的话,会一直处于响应状态,页面不会显示内容
}
});
break;
case './list'://显示商品列表页
fs.readFile("./list.html",function(err,content)){
if(err){
response.end(err.message);
}else{
response.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});//告诉相应头文件,返回数据的类型
response.write(content);//返回的内容,有时候还会加上buter数据类型
response.end(); //结束响应,不写的话,会一直处于响应状态,页面不会显示内容
}
})
break;
case '/goods':
fs.readFile("./shopInfo.html",function(err,content)){
if(err){
response.end(err.message);
}else{
response.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});//告诉相应头文件,返回数据的类型
response.write(content);//返回的内容,有时候还会加上buter数据类型
response.end(); //结束响应,不写的话,会一直处于响应状态,页面不会显示内容
}
})
break;
default:
var filename =url.pathname.substring(1);
var type=getType(filename.substring(filename.lastIndexof('.')+1));
console.log(filename);
fs.readFile(filename,function(err,content)){
if(err){
response.writeHead(404,{'Content-Type':'text/plain;charset="utf-8"'});
response.end(err.message);
response.end();
}else{
response.writeHead(200,{'Content-Type':type});//告诉相应头文件,返回数据的类型
response.write(content);//返回的内容,有时候还会加上buter数据类型
response.end(); //结束响应,不写的话,会一直处于响应状态,页面不会显示内容
}
});
break;
})
//这里定义了一个用来判断文件类型的函数
function getType(endTag){
var type=null;
switch(endTag){
case 'html':
type='text/html;charset="utf-8"';
break;
case 'htm':
type='text/html;charset="utf-8"';
break;
case 'js':
type='application/javascript;charset="utf-8"';
break;
case 'css':
type='text/css;charset="utf-8"';
break;
case 'txt':
type='text/plain;charset="utf-8"';
break;
case 'manifest':
type='text/cache-manifest;charset="utf-8"';
break;
default :
type='application/octet-stream';
break;
}
}