使用JavaScript(JS)创建一个留言板涉及到前端与后端的交互,通常还需要一个数据库来存储留言数据。以下是一个基本的实现步骤和示例代码:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
mongoose.connect('mongodb://localhost:27017/message_board', { useNewUrlParser: true, useUnifiedTopology: true });
const messageSchema = new mongoose.Schema({
name: String,
message: String,
date: { type: Date, default: Date.now }
});
const Message = mongoose.model('Message', messageSchema);
app.get('/api/messages', async (req, res) => {
const messages = await Message.find().sort({ date: -1 });
res.json(messages);
});
app.post('/api/messages', async (req, res) => {
const newMessage = new Message(req.body);
await newMessage.save();
res.status(201).json(newMessage);
});
app.listen(3000, () => console.log('Server running on port 3000'));
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Message Board</title>
</head>
<body>
<div id="messages"></div>
<form id="messageForm">
<input type="text" id="name" placeholder="Your name" required>
<textarea id="message" placeholder="Your message" required></textarea>
<button type="submit">Submit</button>
</form>
<script>
const messageForm = document.getElementById('messageForm');
const messagesDiv = document.getElementById('messages');
async function loadMessages() {
const response = await fetch('/api/messages');
const messages = await response.json();
messagesDiv.innerHTML = messages.map(msg => `<div><strong>${msg.name}:</strong> ${msg.message} <em>${new Date(msg.date).toLocaleString()}</em></div>`).join('');
}
messageForm.addEventListener('submit', async (e) => {
e.preventDefault();
const name = document.getElementById('name').value;
const message = document.getElementById('message').value;
await fetch('/api/messages', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name, message })
});
loadMessages();
messageForm.reset();
});
loadMessages();
</script>
</body>
</html>
通过以上步骤和代码示例,你可以创建一个基本的留言板功能。根据需求,可以进一步扩展和优化功能。
领取专属 10元无门槛券
手把手带您无忧上云