利用nodejs完成的小小的留言板功能,从文件中读取数据

本文介绍了使用Node.js重温并实现的一个留言板功能,包括加载静态页面、获取与提交表单数据、读取留言数据的步骤,旨在提升技能并供日后参考。
摘要由CSDN通过智能技术生成

今天复习了之前利用node写的留言板功能,发现还是不能熟练运用,所以发到论坛上,供以后参考学习。

思路:1,加载静态页面 2,获取表单中的数据 3,提交表单中的数据 4,读取表单中的数据
准备工作:静态页面,css,js;
 //nodejs
var http = require("http");
var fs = require("fs");
var path = require("path");
var url = require("url");
var ejs = require("ejs");
var querystring = require("querystring");

var server = http.creatServer(function(req,res){
var realUrl = "http://" + req.headers.host + req.url; //获取完整的路由
var urlObj = url.parse(realUrl);//将路由转化为对象,对路由中的pathname元素进行操作
switch(url.pathname){
case "/" : //
var arr = [];
if(fs.existsSync(filename)){
arr = require("./data.json");
}
ejs.renderFile("index.html",{msg:arr},function(err,html){  //读取表单中的数据
if(err) throw err;
res.end(html);
});
break;
case "/publish" :
var str = "";
req.on("data",function(chunk){  //获取表单中的全部字符串,例如:username = 旺财 &pwd = 123
str +=chunk;
});
req.on("end",function(){
var msg = querystring.parse(str);//将获取的全部字符串转化为对象
msg.time = new Date().toLocaleString();//为msg添加time属性,并把时间转化成字符串
var arr = [];
if(fs.existsSync("data.json")){ //判断是否存在data.json对象
arr = require("./data.json"); 
}
arr.unshif(msg) //对数组中的对象进行操作

fs.writeFile("data.json",JSON.stringify(arr),"utf8",function(err){
if(err) throw err;
res.end("<a href='/'>点击进入首页面</a>");

})

})

break;
default:
            var filename = path.join(__dirname, urlObj.pathname);
            if (fs.existsSync(filename)) {
                fs.readFile(filename, function (err, data) {
                    if (err) throw err;
                    res.end(data);
                })
            } else {
                res.end();
            }
            break;




}
});
server.listen(3000);
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>LD Stuido留言板</title>
</head>

<link rel="stylesheet" href="style/base.css">
<link rel="stylesheet" href="style/global.css">

<body>
    <div class="wrapper">
        <!--  公共头部 -->
        <div class="header">
            <h1><a href="">wyy留言板</a></h1>
            <h2>很靠谱的留言板</h2>
            <img src="images/hanoi.jpg" alt="" />
            <ul>
                <li><a href="">首页</a></li>
                <li><a href="">关于</a></li>
            </ul>
        </div>


        <div class="main">
            <div class="content">

                <!-- 动态的读取留言内容,然后输出 -->
                <% for(var i = 0;i<msg.length;i++)
                { 
                 %>
                    <div class="msg">
                        <h2> <%=msg[i].title%></h2>
                        <p>发表于<a href=""><%=msg[i].time%></a><a href=""><%=msg[i].author %></a></p>
                        <p><%=msg[i].content%></p>
                    </div>
                <%
            }
                %>


                <div class="msg_form">
                    <h2>发表留言</h2>
                    <form action="/publish" method="POST">
                        <ul>
                            <li>
                                <label for="">标题:</label>
                            </li>
                            <li>
                                <input type="text" name="title" class="txt" />
                            </li>
                            <li>
                                <label for="">作者:</label>
                            </li>
                            <li>
                                <input type="text" name="author" class="txt" />
                            </li>
                            <li>
                                <label for="">内容:</label>
                            </li>
                            <li>
                                <textarea name="content" id="" cols="70" rows="5"></textarea>
                            </li>
                            <li>
                                <input type="submit" value="提 交" class="btn" />
                            </li>
                        </ul>
                    </form>
                </div>
            </div>


            <div class="sidebar">
                <h2>最新留言</h2>
                <ul>
                    <li><a href="">LAMP架构</a></li>
                    <li><a href="">JavaScript程序设计</a></li>
                    <li><a href="">CSS样式</a></li>
                    <li><a href="">XTHML结构</a></li>
                </ul>
            </div>
        </div>
        <div style="clear:both;"></div>
        <!-- 公共底部 -->
        <div class="footer">
            <p><a href="">wyy</a> &copy; 2009-2012 版权所有</p>
        </div>
    </div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值