留言本项目---初步

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了留言本项目---初步相关的知识,希望对你有一定的参考价值。

目录

下载模板引擎                         npm install art-template

安装 boostrap                         npm install bootstrap

boostrap依赖于jquery,所以还要安装jquery     npm install jquery

安装用于格式化时间的模块     npm install silly-datetime

项目目录 

记得将下载好的 boostrap 和 jquery 这两个第三方库放到 /public/lib 目录下

   

服务端入口文件 

app.js 

var http = require('http')
var fs = require('fs')
var template = require('art-template')
var url = require('url')
var sd = require('silly-datetime')

var comments = [
	{
		name: '宙斯',
		message: '我是众神之王',
		dateTime: '2021-01-20'
	},
	{
		name: '波塞冬',
		message: '我是海神',
		dateTime: '2021-02-21'
	},
	{
		name: '雅典娜',
		message: '我是智慧之神',
		dateTime: '2021-03-22'
	},
]

http
	.createServer(function(req,res) {
		// url.parse方法将路径解析为一个方便操作的对象,第二个参数为true表示将查询字符串转为一个对象
		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 Not Found.')
				}
				var htmlStr = template.render(data.toString(), {
					comments: comments
				})
				res.end(htmlStr)
			})
		} else if(pathname === '/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/开头的,则我认为你要获取public中的某个资源
			//所以可以把请求路径当作文件路径来进行读取
			fs.readFile('.' + pathname, function(err, data) {
				if(err){
					return res.end('404 Not Found.')
				}
				res.end(data)
			})
		} else if(pathname === '/pinglun') {
			// 1. 获取表单提交的数据
			var comment = parseObj.query
			// 2. 将当前时间添加到数据对象中
			comment.dateTime = sd.format(new Date(), 'YYYY-MM-DD HH:mm')
			comments.unshift(comment)
			// 3. 让用户重定向到首页 /
			// 302状态码表示临时重定向,浏览器收到该状态码就会自动去响应头找Location
			res.statusCode = 302
			res.setHeader('Location','/')
			res.end()
		} else {
			fs.readFile('./views/404.html', function(err, data) {
				if(err) {
					return res.end('404 Not Found.')
				}
				res.end(data)
			})
		}
	})
	.listen(3000,function () {
		console.log('running...')
	})

留言板首页渲染  

view/index.html 

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>留言本</title>
	<link rel="stylesheet" href="/public/lib/bootstrap/dist/css/bootstrap.css">
</head>
<body>
	<div class="header container">
		<div class="page-header">
			<h1>Message Board<small> speak your mind freely</small></h1>
			<a class="btn btn-success" href="/post">发表留言</a>
		</div>
	</div>
	<div class="comments container">
		<ul class="list-group">
			<!--这里的each 是art-template的模板语法-->
			{{each comments}}
			<li class="list-group-item">{{ $value.name }}说: {{ $value.message }}<span class="pull-right">{{ $value.dateTime }}</span></li>
			{{/each}}
		</ul>
	</div>
</body>
</html>

用户在首页点击“发表留言”之后跳转的页面 

表单中需要提交的表单控件元素必须具有 name 属性,因为form表单提交之后,后台通过name属性获取表单中的内容。 

 view/post.html 

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>发表留言</title>
	<link rel="stylesheet" href="/public/lib/bootstrap/dist/css/bootstrap.css">
</head>
<body>
	<div class="header container">
		<div class="page-header">
			<h1>Home<small> Leave a comment</small></h1>
		</div>
		<div class="comments container">
			<form action="/pinglun" method="get">
				<div class="form-group">
					<label for="input_name">你的大名</label>
					<input type="text" class="form-control" required minlength="2" maxlength="10" id="input_name" name="name" placeholder="请写入你的姓名"></input>
				</div>
				<div class="form-group">
					<label class="textarea_message">留言内容</label>
					<textarea class="form-control" name="message" id="textarea_message" cols="30" rows="10" required minlength="5" maxlength="100"></textarea>
				</div>
				<button type="submit" class="btn btn-default">发表</button>
			</form>
		</div>
	</div>
</body>
</html>

404处理

404.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<title>404</title>
	</head>
	<body>
		<h1>抱歉!您要访问的页面失灵啦...</h1>
	</body>
</html>

首页 

点击“发表留言” 

写完留言,点击"发表",页面自动跳转到首页

以上是关于留言本项目---初步的主要内容,如果未能解决你的问题,请参考以下文章

初步了解Node.js,学做简单的留言本案例

留言功能问题

片段在较低版本的android中无法正常工作

php初步

实验一:初步认识程序在内存中运行

《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段