http模块( 创建Web服务器模块 )
在Node.js 中,不需要使用 IIS、Apache 等第三方Web服务器软件。
基于Node.js提供的 http模块,可以实现生成服务器软件,对外提供Web服务。
创建基本Web服务器
//导入http模块
const http = require('http');
//创建 Web 服务器实例
var server = http.createServer();
//为服务器实例绑定request 事件,监听客户端的请求
server.on('request',function(req,res){
//req请求对象(访问与 客户端 相关的数据或属性)
//req.url 客户端请求 URL 地址
//req.method 客户端 method 请求类型
var url = req.url;
var content = '<h1>404 Not found!</h1>';
//根据不同url响应对应html内容
if(url === '/' || url === '/index.html'){
//访问首页
content = '<h1>首页</h1>';
}
//res响应对象(访问与 服务器 相关的数据或属性)
//res.end 向客户端发送指定内容并结束这次请求处理
//解决 中文乱码 问题 设置响应头 Content-Type 为 text/html;charset=utf-8
res.setHeader('Content-Type','text/html;charset=utf-8');
var strInfo = 'WebServer 服务器正在被访问;URL地址:'+req.url+'; Method类型:'+req.method;
console.log(strInfo);
res.end(content);
});
//启动服务器
server.listen(8080,function(){
console.log('Server running at http://127.0.0.1:8080.');
});
项目部署案例:
//导入模块
const fs = require('fs');
const path = require('path');
const http = require('http');
//创建 Web 服务器实例
var server = http.createServer();
//为服务器实例绑定request 事件,监听客户端的请求
server.on('request',function(req,res){
var url = req.url;
//res.setHeader('Content-Type','text/html;charset=utf-8'); //会影响样式编码
var content = '<h1>404 Not found!</h1>';
//URL 映射为文件储存路径(路径优化)
//var urlPath = path.join(__dirname,url);
var urlPath = '';
if(url === '/')
urlPath = path.join(__dirname,'./Clock/index.html');
else
urlPath = path.join(__dirname,'./Clock',url);
//读取文件
fs.readFile(urlPath,'utf8',function(err,dataStr){
if(err)
return res.end(content);
res.end(dataStr);
});
});
//启动服务器
server.listen(8080,function(){
console.log('Server running at http://127.0.0.1:8080.');
});