node底层简单实现评论功能

 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

http://127.0.0.1:3000/

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")
    
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值