长宁做网站公司网站建设功能定位

张小明 2026/1/9 22:34:18
长宁做网站公司,网站建设功能定位,枣庄网站建设哪家强,wordpress自助友链1. 前端角色#xff1a;发起请求和处理响应前端主要负责#xff1a;收集用户输入数据通过HTTP请求调用后端API处理响应并更新UI2. 基础前端代码示例#xff08;使用Fetch API#xff09;// API服务模块 class ApiService {constructor(baseURL) {this.baseURL baseURL;}//…1. 前端角色发起请求和处理响应前端主要负责收集用户输入数据通过HTTP请求调用后端API处理响应并更新UI2. 基础前端代码示例使用Fetch API// API服务模块 class ApiService { constructor(baseURL) { this.baseURL baseURL; } // 查询数据 async getItems() { try { const response await fetch(${this.baseURL}/api/items); if (!response.ok) throw new Error(获取数据失败); return await response.json(); } catch (error) { console.error(获取数据出错:, error); throw error; } } // 添加数据 async addItem(itemData) { try { const response await fetch(${this.baseURL}/api/items, { method: POST, headers: { Content-Type: application/json, }, body: JSON.stringify(itemData) }); if (!response.ok) throw new Error(添加失败); return await response.json(); } catch (error) { console.error(添加数据出错:, error); throw error; } } // 更新数据 async updateItem(id, updateData) { try { const response await fetch(${this.baseURL}/api/items/${id}, { method: PUT, headers: { Content-Type: application/json, }, body: JSON.stringify(updateData) }); if (!response.ok) throw new Error(更新失败); return await response.json(); } catch (error) { console.error(更新数据出错:, error); throw error; } } // 删除数据 async deleteItem(id) { try { const response await fetch(${this.baseURL}/api/items/${id}, { method: DELETE }); if (!response.ok) throw new Error(删除失败); return true; } catch (error) { console.error(删除数据出错:, error); throw error; } } } // 使用示例 const api new ApiService(https://your-backend.com); // 获取并显示数据 async function loadAndDisplayItems() { const items await api.getItems(); // 更新UI显示数据 } // 添加新项目 async function handleAddItem() { const newItem { name: document.getElementById(itemName).value, description: document.getElementById(itemDesc).value }; await api.addItem(newItem); await loadAndDisplayItems(); // 刷新数据 }后端实现示例Node.js Express MySQL了解后端如何实现可以帮助前端开发者更好地协作// 后端API示例 const express require(express); const mysql require(mysql2/promise); require(dotenv).config(); const app express(); app.use(express.json()); // 创建数据库连接池生产环境使用环境变量 const pool mysql.createPool({ host: process.env.DB_HOST, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, waitForConnections: true, connectionLimit: 10 }); // 获取所有项目 app.get(/api/items, async (req, res) { try { const [rows] await pool.execute(SELECT * FROM items); res.json(rows); } catch (error) { console.error(数据库查询错误:, error); res.status(500).json({ error: 服务器内部错误 }); } }); // 添加新项目 app.post(/api/items, async (req, res) { try { const { name, description } req.body; // 数据验证 if (!name || !description) { return res.status(400).json({ error: 缺少必要字段 }); } const [result] await pool.execute( INSERT INTO items (name, description) VALUES (?, ?), [name, description] ); res.status(201).json({ id: result.insertId, name, description }); } catch (error) { console.error(数据库插入错误:, error); res.status(500).json({ error: 服务器内部错误 }); } }); // 更新项目 app.put(/api/items/:id, async (req, res) { // ... 类似实现 }); // 删除项目 app.delete(/api/items/:id, async (req, res) { // ... 类似实现 }); app.listen(3000, () { console.log(服务器运行在 http://localhost:3000); });现代前端数据管理方案1. 使用状态管理库// 以React TanStack Query为例 import { useQuery, useMutation, useQueryClient } from tanstack/react-query; function ItemList() { const queryClient useQueryClient(); // 获取数据 const { data: items, isLoading } useQuery({ queryKey: [items], queryFn: () fetch(/api/items).then(res res.json()) }); // 添加数据 const addMutation useMutation({ mutationFn: (newItem) fetch(/api/items, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(newItem) }).then(res res.json()), onSuccess: () { queryClient.invalidateQueries([items]); // 刷新数据 } }); // 类似地实现更新和删除... }2. 使用专门的HTTP客户端Axios: 功能强大的HTTP客户端SWR: React专用的数据获取库RTK Query: Redux Toolkit的数据获取解决方案实际项目中的最佳实践1. 统一错误处理// 错误处理中间件 const handleApiError async (response) { if (!response.ok) { const error await response.json().catch(() ({})); throw new Error(error.message || HTTP错误: ${response.status}); } return response.json(); }; // 使用示例 fetch(/api/items) .then(handleApiError) .then(data console.log(data)) .catch(error showErrorToast(error.message));2. 请求拦截器添加认证等// Axios示例 axios.interceptors.request.use(config { const token localStorage.getItem(auth_token); if (token) { config.headers.Authorization Bearer ${token}; } return config; }); // 响应拦截器处理常见错误 axios.interceptors.response.use( response response, error { if (error.response?.status 401) { // 跳转到登录页 window.location.href /login; } return Promise.reject(error); } );
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发公司源码界首网站建设

第一章:PHP架构升级的挑战与Rust扩展的机遇随着Web应用复杂度不断提升,传统PHP架构在性能、并发处理和内存安全方面面临严峻挑战。尽管PHP 8.x通过JIT编译器显著提升了执行效率,但在高负载场景下仍显乏力。与此同时,Rust以其零成本…

张小明 2026/1/8 8:24:38 网站建设

孟村做网站价格定制鞋子哪个网站好

网络编程入门:从理论到实践 1. 网络编程概述 网络编程能让我们的应用程序与运行在远程计算机、本地网络或互联网上的其他程序进行通信。要进行网络编程,需要安装 Go 语言环境和自己喜欢的编辑器,同时还需在机器上安装 OpenSSL。很多 Linux 发行版已预装了某些版本的 OpenS…

张小明 2026/1/8 11:33:29 网站建设

南通网站公司湖南做网站 磐石网络引领

springboot热部署 Spring Boot 热部署指在应用运行过程中修改项目代码、配置文件或静态资源后,无需手动重启应用即可自动生效,仅对修改的项目代码快速重启。 Spring Boot 内置的 spring-boot-devtools 开发工具模块专门为开发者提供热部署支持&#xff0…

张小明 2026/1/8 12:26:45 网站建设

品牌战略咨询网络推广优化招聘

深入探索Cacti模块:从基础功能到高级插件的实现 1. 实现基础模块功能 在模块开发中,多数模块通过其清单(manifests)完成所有工作,但也有例外,如stdlib模块,它主要添加解析器函数和一些通用资源类型。在规划模块的类时,最直接的方法是思考如何使用完成后的模块,接口设…

张小明 2025/12/26 6:33:56 网站建设

佛山免费建站开发一个手游需要多少钱

35 岁以后,运维的出路在哪里? 看到这样一个问题: 运维的出路在哪里,特别是35以后? IT行业中,“35岁”的年龄问题可以说是悬在每个人头上的“达摩克里斯之剑”。职业发展的不确定性、技术工作的高强度,都…

张小明 2026/1/7 14:13:50 网站建设

舟山企业网站建设公司官网登录入口在哪里

Ultralytics YOLO实战性能优化:从基础配置到企业级部署 【免费下载链接】ultralytics ultralytics - 提供 YOLOv8 模型,用于目标检测、图像分割、姿态估计和图像分类,适合机器学习和计算机视觉领域的开发者。 项目地址: https://gitcode.co…

张小明 2026/1/8 3:36:12 网站建设