基于Node.js 实现简单留言本

`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…’)
})`

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值