server.js:
通过传参可以不写定port,可以自定义
var http = require("http");
var url = require('url');
// var qs = require('querystring');
// var port = 7888;
var data;
var _server;
const createServer = function (port) {
var port = port || 3000
_server = new http.Server().listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
})
_server.on("request", function (req, res) {
var parseObj = url.parse(req.url, true);
var pathname = parseObj.pathname; //相当于无参数的url路径
console.log(pathname);
if (pathname === '/getData') {
res.writeHead(200, {
"content-type": "application/json;charset=utf-8;"
});
// res.write("hello nodejs" + data);
res.end(data);
}
//关闭服务器,这是根据url,也可以直接调用下面的暴露的方法进行关闭
else if (pathname === '/exit') {
res.end('Bye!');
_server.close();
console.log('Bye!', this);
} else {
res.end('请求路径: ' + req.url);
}
});
_server.on('clientError', (err, socket) => {
socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
});
_server.on('close', () => {
console.log('server close')
})
_server.on('connection', () => {
console.log('server connection')
})
_server.on('error', (error) => {
console.log('server error,messmage is' + error)
})
}
const closeServer = function () {
//关闭上面建的服务器
_server.close()
}
module.exports = {
createServer,
closeServer
};
在要调用的地方,比如test.js,引入这个js
var serv = require('./server.js')
console.log(serv)
serv.createServer()
//#endregion
setTimeout(() => {
serv.closeServer()
}, 10000);
这是方法调用的方式创建的web server,可以根据具体的需要进行修改
var http = require('http'); //node服务器使用的是http模块
var server = http.createServer((req,res)=>{
/**
* req客户端发过来的数据,包含方法,地址,head,参数等
* res是服务端的响应
*/
console.log(req.method)
console.log(req.url)
res.setHeader('content-type','text/html')
res.setHeader('content-encoding','utf8')
if(req.method==='GET'){
//switch根据不同的请求地址url响应不同的页面内容
switch(req.url){
case '/':
case '/index.html':
var html = `
<html>
<head><meta charset='UTF-8'/><title>紫薯的服务</title></head>
<body>
<h2>欢迎来到紫薯的家园</h2>
<a href='/add.html'>add</a>
<a href='/delete.html'>delete</a>
<a href='/edit.html'>edit</a>
<a href='/find.html'>find</a>
</body>
</html>
`
res.write(html)
break;
case '/add.html':
var addHtml = `
<html>
<head>
<meta charset='utf-8'/>
<title>紫薯的服务</title>
</head>
<body><h1>add</h1></body>
</html>
`
res.write(addHtml)
break;
case '/delete.html':
var deleteHtml = `
<html>
<head>
<meta charset='utf-8'/>
<title>紫薯的服务</title>
</head>
<body><h1>delete</h1></body>
</html>
`
res.write(deleteHtml)
break;
case '/edit.html':
var editHtml = `
<html>
<head>
<meta charset='utf-8'/>
<title>紫薯的服务</title>
</head>
<body><h1>edit</h1></body>
</html>
`
res.write(editHtml)
break;
case '/find.html':
var findHtml = `
<html>
<head>
<meta charset='utf-8'/>
<title>紫薯的服务</title>
</head>
<body><h1>find</h1></body>
</html>
`
res.write(findHtml)
break;
default:
//当请求地址不在以上时,显示404
res.end('<h1>404</h1> bed request,nothing can show you '+req.url)
}
}
res.end();
})
server.listen(8888)