`var http = require(‘http’)
var fs = require(‘fs’)
// 引入模板引擎
var template = require(‘art-template’)
// 加载 url 核心模块
var url = require(‘url’)
var comments = [
{
name: ‘Jack’,
message: ‘真的不错哟’,
date: ‘2020-2-12’
},
{
name: ‘Andy’,
message: ‘真的不错哟’,
date: ‘2020-2-12’
},
{
name: ‘Red’,
message: ‘真的不错哟’,
date: ‘2020-2-12’
},
{
name: ‘Green’,
message: ‘真的不错哟’,
date: ‘2020-2-12’
},
{
name: ‘Yellow’,
message: ‘真的不错哟’,
date: ‘2020-2-12’
},
{
name: ‘Blue’,
message: ‘真的不错哟’,
date: ‘2020-2-12’
},
]
// /pinglun?name=123&message=12334
// 对于这种请路径 有动态填写的内容
// 我们只需要判定 路径是 /pinglun 的时候 就认为是提交表单的请求过来了
// 统一处理静态资源 图片 css 等 将他们都放在public 目录下
var server = http.createServer()
server.on(‘request’, function(req, res) {
// url.parse(req.url, true) 方法 将路径解析为一个放便操作的对象
// 通过query属性访问
var parseObj = url.parse(req.url, true)
// http://127.0.0.1:3000/pinglun?name=%E5%88%98%E5%9F%8E%E6%B4%AA&message=12334
// parseObj.pathname 单独获取不包含 ? 之后的部分 http://127.0.0.1:3000/pinglun
var pathname = parseObj.pathname
if (pathname === '/' || url === '/index') {
fs.readFile('./views/index.html', function(err, data) {
if (err) {
return res.end('404 Not Found.')
}
// 渲染首页
var htmlStr = template.render(data.toString(), {
comments: comments
})
res.end(htmlStr)
})
} else if (pathname === '/post') {
// url === '/post' 不加 .html 美化 url 对应页面中是post.html 的地方也需要改为 /post
fs.readFile('./views/post.html', function(err, data) {
if (err) {
return res.end('404 Not Found.')
}
res.end(data)
})
} else if (pathname.indexOf('/public/') === 0) {
// 如果请求路径以 /public/ 开头 就把请求路径当做文件路径 直接读取
fs.readFile('.' + pathname, function(err, data) {
if (err) {
return res.end('404 Not Found.')
}
res.end(data)
})
} else if (pathname === '/pinglun') {
// console.log('收到提交请求', parseObj.query);
// url 的 parse 方法 把路径字符串解析成了对象
// 1.接下来就是 获取表单提交数据 parseObj.query
var comment = parseObj.query
// 2.生成日期对象 存储到数组中
comment.date = new Date()
// 数据追加
// comments.push(comment)
// 数据前插
comments.unshift(comment)
// 3.让用户重定向到首页 /
// 状态码( statusCode )设置为 302 临时重定向 响应头中通过 Location 告诉客户端往哪里重定向
res.statusCode = 302
res.setHeader('Location', '/')
res.end()
}else {
// 其他全部处理为找不到
fs.readFile('./views/404.html', function(err, data) {
// 可以省略err判断
res.end(data)
})
}
}).listen(3000, function() {
console.log(‘Server is running…’)
})`