1. / index.html
2.开放public 目录中的静态资源
3 当请求/public/xoxx 的时候,读取响应public 目录中的具体资源141 11 3. /post post.html
4. /pinglun
4.1接收表单提交数据
4.2存储表单提交的数据
4.3让表单重定向到/
statusCode
setHeader
var http = require('http')
var fs = require('fs')
var template = require('art-template')
var url = require('url')
var comments = [
{
name:'li',
message:'这是评论',
dataTime:'2020-01-01'
}
]
http
.createServer(function(req,res){
var parseObj = url.parse(req.url,true)
var pathname = parseObj.pathname//这个路径不包含?之后的部分
if(pathname ==='/'){
fs.readFile('./views/index.html',function(err,data){
if (err){
return res.end('404')
}
var htmlStr = template.render(data.toString(),{
comments:comments
})
res.end(htmlStr)
})
}
//如果请求路径是以/public开头的则就会获取public中的某个资源,把请求路径当做文件路径来进行读取
else if(pathname.indexOf('/public/') === 0){
fs.readFile('.' + pathname,function(err,data){
if(err){
return res.end('404')
}
return res.end(data)
})
}
else if(pathname === '/pinglun'){
//无论/pinglun后面是什么都会进来
//一个请求对应一个响应。响应结束,这次请求也就结束了。不再接受响应
// res.end(JSON.stringify(parseObj.query))
//收到数据,使用url模块的parse方法把请求路径中的查询字符串解析为一个对象
//获取数据parseObj.query
//生成日期
//让用户跳转到首页
var comment = parseObj.query
comment.dataTime = '2017-11-2 17:11:22'
comments.unshift(comment)
//服务端已经把数据存储好了,让用户重新请求/
//如何通过服务器让客户端重定向,302临时重定向(statusCode),在响应头中通过location重定向(setHeader)
//只要客户端发现状态码是302,就会自动响应头找Location中
res.statusCode = 302
res.setHeader('Location','/')
res.end()
}
else if(pathname ==='/post'){
fs.readFile('./views/post.html',function(err,data){
if (err){
return res.end('404')
}
res.end(data)
})
}
else{
// 页面跳转加入404处理
fs.readFile('./views/404.html',function(err,data){
if (err){
return res.end('404')
}
res.end(data)
})
}
})
.listen(3000,function(){
console.log("running")
})