用Express重写之前的留言本案例

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Express重写之前的留言本案例相关的知识,希望对你有一定的参考价值。

目录

在Express中获取表单GET请求参数
req.query
获取表单POST请求体数据
由于Express中没有内置获取表单POST请求体的API,这里需要使用一个第三方包body-parser
有了这样一个中间件,就可以通过req.body来获取表单POST请求体数据了

安装:npm i -S body-parser

配置可参考Express官网

关于案例,我们修改两个地方

app.js

const express = require('express')
const app = express()
var sd = require('silly-datetime')
var bodyParser = require('body-parser')

// 配置body-parser中间件
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())

app.use('/public/', express.static('./public/'))
app.engine('html', require('express-art-template'))

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

app.get('/', function (req, res) {
	res.render('index.html', {
		comments: comments
	})
})

app.get('/post', function (req, res) {
	res.render('post.html')
})

app.post('/post', function (req, res) {
	var comment = req.body
	comment.dateTime = sd.format(new Date(), 'YYYY-MM-DD HH:mm')
	comments.unshift(comment)
	res.redirect('/')
})

app.listen(3000, function () {
	console.log('The server is running at port 3000...')
})

views/post.html(表单提交改成post请求)

<!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="/post" method="get">
				... //原代码不变
			</form>
		</div>
	</div>
</body>
</html>

这是我们要安装的依赖

"dependencies": {
    "art-template": "^4.13.2",
    "body-parser": "^1.19.0",
    "bootstrap": "^5.1.3",
    "express": "^4.17.1",
    "express-art-template": "^1.0.1",
    "jquery": "^3.6.0",
    "silly-datetime": "^0.1.2"
  }

以上是关于用Express重写之前的留言本案例的主要内容,如果未能解决你的问题,请参考以下文章

nodejs中利用expresss脚手架和bootstrap,数据库mongodb搭建的留言板案例

jQuery插件版无缝轮播,重写了之前的代码,显得更高大上一点

使用express4.x版Jade模板以及mysql重写《nodejs开发指南》微博实例

利用Express优化留言板项目

夺命雷公狗-----React---21--小案例之心情留言板

java 代码片段