上海学网站建设旅游网页模板免费下载

张小明 2026/1/2 23:49:32
上海学网站建设,旅游网页模板免费下载,焦作建设网站哪家好,什么网站可以做项目接上文 修改VUE内容 打开文件 vue-frontend/src/App.vue#xff0c;用以下代码替换其内容。我们使用浏览器的原生 fetch API 进行请求#xff1a; script setup import { ref, onMounted } from vue;// ------------------------------------ // 1. 定义状态和常量 /…接上文修改VUE内容打开文件 vue-frontend/src/App.vue用以下代码替换其内容。我们使用浏览器的原生 fetch API 进行请求script setup import { ref, onMounted } from vue; // ------------------------------------ // 1. 定义状态和常量 // ------------------------------------ const tasks ref([]); // 存放从后端获取的任务列表 const newTaskTitle ref(); // 存储输入框的内容 const apiBaseUrl http://127.0.0.1:8000; // FastAPI 后端地址 // ------------------------------------ // 2. 获取任务的函数 (Read - 读取) // ------------------------------------ async function fetchTasks() { try { const response await fetch(${apiBaseUrl}/tasks); if (!response.ok) { throw new Error(HTTP error! status: ${response.status}); } tasks.value await response.json(); } catch (error) { console.error(获取任务失败:, error); alert(无法连接到 FastAPI 后端请确保后端服务已运行在 http://127.0.0.1:8000); } } // ------------------------------------ // 3. 增加新任务 (Create - 创建) // ------------------------------------ async function addTask() { if (!newTaskTitle.value.trim()) { alert(任务标题不能为空); return; } const taskData { // ID 不需要提供FastAPI 会自动分配 title: newTaskTitle.value, is_completed: false }; try { const response await fetch(${apiBaseUrl}/tasks, { method: POST, // 使用 POST 方法 headers: { Content-Type: application/json, // 告诉后端我们发送的是 JSON }, body: JSON.stringify(taskData), // 将 JavaScript 对象转换为 JSON 字符串发送 }); if (response.ok) { const createdTask await response.json(); tasks.value.push(createdTask); // 将新创建的任务包含后端分配的ID添加到前端列表 newTaskTitle.value ; // 清空输入框 } else { throw new Error(创建任务失败); } } catch (error) { console.error(创建任务时发生错误:, error); alert(创建任务失败请检查后端连接。); } } // ------------------------------------ // 4. 切换任务完成状态 (Update - 更新) // ------------------------------------ async function toggleTask(task) { // 1. 立即在前端切换状态 (乐观更新) const newState !task.is_completed; // 2. 准备发送给后端的数据 const updatedTaskData { id: task.id, title: task.title, is_completed: newState // 发送新的状态 }; try { const response await fetch(${apiBaseUrl}/tasks/${task.id}, { method: PUT, // 使用 PUT 方法进行全量更新 headers: { Content-Type: application/json, }, body: JSON.stringify(updatedTaskData), }); if (response.ok) { // 3. 如果成功更新本地状态 task.is_completed newState; } else { // 4. 如果失败回滚本地状态并报错 throw new Error(更新任务状态失败, 状态码: ${response.status}); } } catch (error) { console.error(更新任务 ${task.id} 失败:, error); alert(更新任务失败请检查后端连接。); // 如果请求失败保持任务原有状态 } } // ------------------------------------ // 5. 删除任务 (Delete - 删除) // ------------------------------------ async function deleteTask(taskId) { if (!confirm(确定要删除这个任务吗)) { return; } try { const response await fetch(${apiBaseUrl}/tasks/${taskId}, { method: DELETE, // 使用 DELETE 方法 }); if (response.ok) { // 1. 如果后端删除成功在前端列表中过滤掉该任务 tasks.value tasks.value.filter(t t.id ! taskId); } else { // 2. 如果后端返回 404 等则抛出错误 throw new Error(删除任务失败, 状态码: ${response.status}); } } catch (error) { console.error(删除任务 ${taskId} 失败:, error); alert(删除任务失败请检查后端连接。); } } // ------------------------------------ // 6. 生命周期钩子 // ------------------------------------ // 组件挂载后立即调用 fetchTasks onMounted(fetchTasks); /script template div classcontainer h1 FastAPI Vue 3 任务列表/h1 div classadd-task-form input typetext v-modelnewTaskTitle keyup.enteraddTask placeholder输入新的任务标题... / button clickaddTask添加任务/button /div ul classtask-list v-iftasks.length li v-fortask in tasks :keytask.id :class{ completed: task.is_completed } span classtitle clicktoggleTask(task) {{ task.title }} /span button classdelete-btn clickdeleteTask(task.id) 删除 /button /li /ul p v-else classempty-message 当前没有任务。快创建一个吧 /p p classstatus-info 已成功连接到后端**{{ apiBaseUrl }}** /p /div /template style /* 样式部分保持一致性 */ body { font-family: Segoe UI, Tahoma, Geneva, Verdana, sans-serif; background-color: #f0f2f5; color: #333; } .container { max-width: 600px; margin: 50px auto; background: white; padding: 30px; border-radius: 12px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); } h1 { text-align: center; color: #42b883; /* Vue 绿色 */ margin-bottom: 25px; } .add-task-form { display: flex; gap: 10px; margin-bottom: 25px; } .add-task-form input { flex-grow: 1; padding: 12px; border: 1px solid #ccc; border-radius: 6px; font-size: 16px; } .add-task-form button { background-color: #42b883; color: white; border: none; padding: 12px 20px; border-radius: 6px; cursor: pointer; white-space: nowrap; transition: background-color 0.2s; } .add-task-form button:hover { background-color: #369c6b; } .task-list { list-style: none; padding: 0; } .task-list li { display: flex; justify-content: space-between; align-items: center; padding: 12px 18px; margin-bottom: 10px; background: #fcfcfc; border-radius: 6px; border-left: 5px solid #42b883; transition: all 0.3s; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); } .task-list li.completed { opacity: 0.6; border-left-color: #aaa; background: #f4f4f4; } .title { cursor: pointer; flex-grow: 1; font-size: 1.1em; } .task-list li.completed .title { text-decoration: line-through; } .delete-btn { background-color: #ff4d4f; color: white; border: none; padding: 8px 12px; border-radius: 4px; cursor: pointer; transition: background-color 0.2s; } .delete-btn:hover { background-color: #d9363e; } .empty-message { text-align: center; padding: 20px; color: #666; font-style: italic; } .status-info { margin-top: 30px; padding-top: 15px; border-top: 1px solid #eee; font-size: 0.85em; text-align: center; color: #999; } /style将上面的内容替换原文件。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

程序员自己建站赚钱石家庄营销网站建设

1.普通函数调用开销 2.内联函数1.普通函数调用开销 普通函数调用不是"直接执行函数代码", 而是需要先做"准备工作", 执行完毕后还要做"收尾工作", 再加上指令跳转的损耗这三部分共同构成了调用专属开销("这部分开销和函数体本身的业务逻辑执…

张小明 2025/12/31 2:16:02 网站建设

做全屏式网站尺寸是多大微信公众平台网站开发

LiveSplit:重塑速度跑计时的艺术与科学 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit 当秒表滴答作响,当数字在屏幕上跳跃,那一刻&#…

张小明 2025/12/31 2:54:58 网站建设

株洲第三方网站建设哪家好房产网络

第一章:开源AI神器Open-AutoGLM发布(AutoGLM技术内幕首次公开)近日,备受瞩目的开源项目 Open-AutoGLM 正式上线,标志着自动化自然语言处理迈向新高度。该项目基于深度稀疏注意力机制与动态图学习架构,首次实…

张小明 2026/1/2 12:14:11 网站建设

小规模开普票网站建设几个点app定制

趣味Shell脚本游戏 1. 猜单词游戏(Hangman) 1.1 游戏过程 在猜单词游戏中,程序会隐藏一个单词,玩家需要逐次猜测字母。每次猜测后,程序会提示该字母是否在单词中,并显示当前已猜出的部分单词。例如: guessed: eioum, steps from gallows: 5, word so far: -e--e--io…

张小明 2025/12/31 4:18:08 网站建设

三合一网站怎么建立公司网站没备案

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2025/12/30 22:48:55 网站建设

怎么重新网站做301企业系统培训平台

第一章:Open-AutoGLM 安全访问认证Open-AutoGLM 作为开源自动化大语言模型网关,其安全访问机制是系统可信运行的核心。为确保接口调用的合法性与数据传输的机密性,系统采用多层级认证策略,涵盖 API 密钥验证、JWT 令牌签发及双向 …

张小明 2025/12/30 17:13:26 网站建设