宁泽林_NiZerin - 互联网技术博客

  • PHP
  • Go
  • Java
  • Rust
  • Python
  • 交流群
  • 关于我
  • 留言版
  1. 首页
  2. Node.js
  3. 正文

Nodejs 入门实现简单的留言板功能

2019年2月13日 4033点热度 0人点赞 1条评论

最近在学习 Nodejs ,在学习时主要学习 Node 内部封装的模块 ,使用起来还是非常有意思的。于是就写了一个简单的留言板,来试试手。

本留言板使用的模块有 http丶fs丶url丶 querystring 。

好了不多说了,来看代码。

下面是目录结构

下面来看 app.js 里的代码

const http = require('http')
const fs = require('fs')
const data = require('./data')
const Durl = require('url')
const querystring = require('querystring')
const server = http.createServer('http')
server.on('request',(Request,Response) => {
    console.log(Request.url)
    var url = Request.url
    //访问主页
    if (url === '/'){
        var index = fs.readFileSync('./view/index.html','utf8')
        var content = ''
        data.msgs.forEach((item) => {
            content += `<li class="list-group-item">${item.name}说:${item.content} <span class="pull-right">${item.create_at}</span></li>`
        })
        index = index.replace('{{$msg}}',content)
        Response.setHeader('content-type','text/html;charset=utf-8')
        Response.end(index)
    //访问静态资源
    }else if(url.indexOf('/public/') === 0){
        var res = fs.readFileSync('.' + url)
        Response.end(res)
    //访问添加留言页面
    }else if(url === '/post'){
        var post = fs.readFileSync('./view/addMsg.html','utf8')
        Response.setHeader('content-type','text/html;charset=utf-8')
        Response.end(post)
    //添加留言
    }else if(url.indexOf('/addmsg') === 0){
        //接收get数据
        if(Request.method === 'GET'){
            let paramData = Durl.parse(url,true).query
            if(!paramData.name || !paramData.content){
                return Response.end('404 Not Found')
            }
            var date = new Date();
            var tDate = date.toLocaleString()
            var msg = {name: paramData.name, content: paramData.content, create_at: tDate}
            data.msgs.push(msg)
            Response.statusCode = 302
            Response.setHeader('Location','/')
            Response.end()
        }
        //接收post数据
        if(Request.method === 'POST'){
            var pdata =''
            Request.on('data',function (chunk){
                pdata += chunk
            })
            Request.on('end',function(){
                var dataString = pdata.toString()
                var dataObj = querystring.parse(dataString)
                console.log(dataObj)
                var date = new Date();
                var tDate = date.toLocaleString()
                var msg = {name: dataObj.name, content: dataObj.content, create_at: tDate}
                data.msgs.push(msg)
                Response.statusCode = 302
                Response.setHeader('Location','/')
                Response.end()
            })
        }
    //404页面
    }else{
        var lost404 = fs.readFileSync('./view/404.html','utf8')
        Response.writeHeader(404, 'Not Found', {'Content-Type' : 'text/html; charset=utf8'})
        Response.end(lost404)
    }
})
server.listen(8080,function(){
    console.log('服务启动成功,打开 localhost:8080 进行访问')
})

其实大概思路都差不多,创建 http 服务并启动服务,接收请求,返回数据。

data.js 里就是一点数据而已

静态页面什么的就不多说了,这个大家都会。

博主 nodejs 刚入门,还有很多不足之处,还请见谅。

这里是项目所有代码:https://oss.iacblog.com/res/MsgBox.zip

泽林博客,感谢您的支持!

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: node
最后更新:2019年2月13日

NiZerin

博主已经躺平了,后面很少会更新博客。

打赏 点赞
< 上一篇
下一篇 >

文章评论

  • A宜人贷返点

    很入门

    2019年2月13日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    分类
    • Angular
    • CSS3
    • docker
    • Flutter
    • git
    • Go
    • H5
    • Java
    • JavaScript
    • Laravel
    • linux
    • Node.js
    • PHP
    • Python
    • React
    • redis
    • Vue.js
    • windows
    • WordPress
    • 交流
    • 小程序
    • 工具
    • 网站公告
    标签聚合
    flutter laravel go translations vue javascript wordpress php
    友情链接
    • PHP函数字典
    • 宝塔运维特惠
    • 科学上网
    • 阿里云特惠

    COPYRIGHT © 2021 nizer.in. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang