完整的代码, 可以复制引用
// 引入http模块
let http = require('http');
// 引入url模块 获取域名后面的url
let path = require('path');
let fs = require('fs');
let url = require('url');
let ejs = require('ejs');
// 创建HTTP服务
// request 获取客户端传过来的信息,response 给浏览器响应的信息
http.createServer((request, response) => {
console.log(request.url);
// 有些地址后面会有传值 列入/index.html?12324123
// url.parse(request.url).pathname url.parse().pathname去掉request.url后面的传值
let queryUrl = url.parse(request.url).pathname === '/' ? '/index.html' : url.parse(request.url).pathname;
// extname 获取文件的后缀名(格式名)
let extname = path.extname(queryUrl);
console.log(extname);
// 设置响应头
response.writeHead(200,{'Content-Type': `${contentTypes[extname]};charset="utf-8";`});
// EJS模板引擎渲染
// 在页面里
// var data = {
// title: '我是ejs登录页',
// list: ['q', 'w', 'e', 'r']
// };
// <%= title %>
// <% for(let i = 0; i < list.length; i++) { %>
// <p><%= list[i] %></p>
// <% } %>
if(queryUrl === '/index') {
var data = {
title: '我是ejs登录页',
list: ['q', 'w', 'e', 'r']
};
ejs.renderFile('./components/index.html', data, function(err, str){
if (err) {console.log(err); return;}
response.end(str);
});
return;
} else if(queryUrl === '/my') {
var data = {
title: '我是ejs我的中心'
};
ejs.renderFile('./components/my.html', data, function(err, str){
// 不请求favicon.ico
if (err) {console.log(err); return;}
response.end(str);
});
return;
}
// 文件读取及错误处理
fs.readFile(`.${queryUrl}`, (err, data) => {
if (err) {
response.end('页面404,不存在这个页面');
console.log(err); return;
}
response.end(data.toString());
});
// HTTP请求方法说明及获取传值
// Get、Post 超文本传输协议(HTTP)的设计目的是保证客户端机器与服务器之间的通信。 在客户端和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
// GET - 从指定的资源请求数据。(一般用于获取数据)
// POST - 向指定的资源提交要被处理的数据。(一般用于提交数据
// 获取 GET 传值
var urlinfo = url.parse(req.url, true);
urlinfo.query;
// 获取 POST 传值:
// var postData = '';
// 数据块接收中
req.on('data', function (postDataChunk) {
postData += postDataChunk;
});
// 数据接收完毕,执行回调函数
req.on('end', function () {
try {
postData = JSON.parse(postData);
} catch (e) {
}
req.query = postData;
console.log(querystring.parse(postData));
});
}).listen(8888);
httpServer http://127.0.0.1:8888