使用rust+javascript+html5写一个问题记录的页面

为了实现一个简单的问题记录系统,我们可以使用Rust作为后端,JavaScript和HTML5作为前端。以下是一个简单的实现:

  1. 首先,我们需要创建一个Rust后端,用于处理问题记录的增删改查操作。这里我们使用warp库来创建一个简单的HTTP服务器。

安装依赖:

sh 复制代码
cargo install warp

创建一个名为main.rs的文件,内容如下:

rust 复制代码
use warp::Filter;

#[tokio::main]
async fn main() {
    let questions = warp::path("questions")
        .and(warp::get())
        .map(|| {
            // 这里可以从数据库或其他存储中获取问题列表
            "[]" // 返回一个空的问题列表
        });

    warp::serve(questions)
        .run(([127, 0, 0, 1], 3030))
        .await;
}
  1. 接下来,我们需要创建一个HTML页面,用于显示问题列表和添加新问题。创建一个名为index.html的文件,内容如下:
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>问题记录系统</title>
</head>
<body>
    <h1>问题记录系统</h1>
    <ul id="question-list"></ul>
    <form id="add-question-form">
        <input type="text" id="question-input" placeholder="输入问题">
        <button type="submit">添加问题</button>
    </form>
    <script src="app.js"></script>
</body>
</html>
  1. 然后,我们需要编写JavaScript代码来处理前端逻辑,包括获取问题列表、添加新问题等。创建一个名为app.js的文件,内容如下:
javascript 复制代码
document.getElementById('add-question-form').addEventListener('submit', async (event) => {
    event.preventDefault();
    const questionInput = document.getElementById('question-input');
    const question = questionInput.value;
    if (!question) return;

    // 发送请求到后端API,添加新问题
    const response = await fetch('http://localhost:3030/questions', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ question })
    });

    if (response.ok) {
        // 清空输入框并刷新问题列表
        questionInput.value = '';
        updateQuestionList();
    } else {
        alert('添加问题失败');
    }
});

async function updateQuestionList() {
    const response = await fetch('http://localhost:3030/questions');
    const questions = await response.json();
    const questionList = document.getElementById('question-list');
    questionList.innerHTML = '';
    questions.forEach(question => {
        const li = document.createElement('li');
        li.textContent = question;
        questionList.appendChild(li);
    });
}

updateQuestionList();

现在,你可以运行Rust后端服务器(cargo run),然后在浏览器中打开index.html文件,即可看到一个简单的问题记录系统。请注意,这个示例仅用于演示目的,实际应用中需要考虑数据持久化、错误处理等问题。

相关推荐
yayaya1524 分钟前
javaScriptBOM
开发语言·javascript·ecmascript
阿征学IT10 分钟前
圣诞快乐(h5 css js(圣诞树))
前端·javascript·css
斜杠poven28 分钟前
为什么加try catch 不会 block 进程?
前端·javascript·node.js
安冬的码畜日常1 小时前
【CSS in Depth 2 精译_088】第五部分:添加动效概述 + 第 15 章:CSS 过渡特效概述 + 15.1:状态间的由此及彼
前端·css·css3·html5·css过渡
2401_857026231 小时前
依托 SSM 与 Vue 的电脑测评系统:展现电脑真实实力
前端·javascript·vue.js
2401_857610031 小时前
解析基于 SSM 框架 Vue 电脑测评系统:把握电脑测评精髓
前端·javascript·vue.js
烂不烂问厨房1 小时前
前端项目发布后打开报错Uncaught SyntaxError: Unexpected token ‘<‘ (at chunk-vendors)
前端·javascript·vue.js·前端打包发布
总爱写点小BUG1 小时前
可搜索的下拉选择框:filterable属性详解
前端·javascript·vue.js
程序媛_MISS_zhang_01101 小时前
el-table中合并垂直方向的单元格
前端·javascript·vue.js
m0_607548763 小时前
什么是单例模式
开发语言·javascript·单例模式