在vsc中应用session对象做一个简单的答题界面的代码
时间: 2023-08-13 14:09:12 浏览: 43
好的,以下是一个简单的答题界面的代码示例,使用了 Express 框架和 session 中间件:
```javascript
const express = require('express');
const session = require('express-session');
const app = express();
// 使用 session 中间件
app.use(session({
secret: 'my-secret-key',
resave: false,
saveUninitialized: true
}));
// 答题页面路由
app.get('/question', (req, res) => {
// 如果 session 中没有保存答题进度,则初始化为 0
req.session.progress = req.session.progress || 0;
// 显示当前题目
const question = questions[req.session.progress];
res.send(`
<h1>${question.title}</h1>
<form action="/answer" method="POST">
<input type="hidden" name="id" value="${question.id}">
<label><input type="radio" name="answer" value="A"> ${question.optionA}</label><br>
<label><input type="radio" name="answer" value="B"> ${question.optionB}</label><br>
<label><input type="radio" name="answer" value="C"> ${question.optionC}</label><br>
<button type="submit">提交</button>
</form>
`);
});
// 答案提交路由
app.post('/answer', (req, res) => {
const { id, answer } = req.body;
const question = questions.find(q => q.id === id);
// 判断答案是否正确,并更新答题进度
if (question.answer === answer) {
req.session.progress++;
res.send(`<h1>回答正确!</h1>`);
} else {
res.send(`<h1>回答错误!</h1>`);
}
});
const questions = [
{ id: 1, title: '1 + 1 = ?', optionA: '1', optionB: '2', optionC: '3', answer: 'B' },
{ id: 2, title: '2 * 2 = ?', optionA: '2', optionB: '4', optionC: '6', answer: 'B' },
{ id: 3, title: '3 - 1 = ?', optionA: '1', optionB: '2', optionC: '3', answer: 'B' },
];
app.listen(3000, () => {
console.log('应用已启动,访问 http://localhost:3000/question 开始答题');
});
```
这段代码实现了一个简单的答题页面,用户可以选择答案提交,系统会自动判断答案是否正确,并更新答题进度。答题进度保存在 session 中,以便用户在后续访问时继续答题。