TypeScript高级内容

news/2024/10/5 0:08:31/

完整总结

本节课涵盖了本地开发环境的搭建、前后端的基本交互、以及如何封装 Axios 以增强代码的安全性和可维护性。此外,我们还解决了在代码实现过程中可能遇到的一些常见问题。

1. 本地环境搭建
  • 安装环境依赖:首先需要在本地安装 Node.js(推荐最新稳定版),并全局安装 Vite。通过 Vite 创建 Vue 3 + TypeScript 项目,安装相关依赖后,启动开发服务器进行调试。
  • Vue 单文件组件 (SFC):我们在 src/components/HelloWorld.vue 中看到,Vue 的单文件组件将组件的逻辑、模板和样式封装在一个文件内,便于管理和维护。
2. 使用 Axios 进行网络请求
  • 引入 Axios:在项目中引入 Axios 库,并通过 GET 和 POST 方法与 FastAPI 后端进行通信。示例代码展示了如何在 TypeScript 环境下进行网络请求,并处理返回的数据。
  • FastAPI 后端搭建:使用 Python 3.10.5 及以上版本搭建 FastAPI 后端,配置 CORS 中间件以支持跨域访问,并通过 Uvicorn 运行应用。在启动 FastAPI 后端时需要注意,0.0.0.0 不是一个具体的 IP 地址,访问时需使用 http://127.0.0.1:8009http://localhost:8009
3. 代码问题与解决方案

在实践中,遇到了一些常见的代码问题,包括:

  1. 网络请求无法访问后端:通常这是由于错误的 IP 地址引起的。通过使用本地 IP 地址 (127.0.0.1) 或 localhost 解决该问题。

  2. GET 和 POST 请求的正确配置:在封装 Axios 时,通过 params 参数传递 GET 请求的 URL 参数,确保在请求发出时这些参数能够正确传递给后端。

  3. 前后端交互不成功:检查前端 Axios 请求和后端 FastAPI 路由是否正确匹配,确保请求路径和参数格式一致。

4. 封装 Axios

为了克服 Axios 原生用法中的一些局限性,并更好地支持 TypeScript 的类型检查与语法提示,进行了以下封装工作:

  • 统一处理请求头:在 axios.create 方法中创建 Axios 实例对象,并设置全局的请求和响应拦截器,以确保请求头统一处理。
  • 统一管理接口:在 request 文件夹中添加 api.ts 文件,集中管理所有接口,避免每次请求都重新加载接口文件。
  • 避免回调地狱:通过封装异步请求,结合 async/await 语法,使代码结构更加清晰,避免传统回调方法带来的复杂性。
5. TypeScript 与 Axios 的结合
  • 类型声明:Axios 提供了完整的类型声明,通过泛型参数 TRD,分别定义服务器返回的数据类型、经过 Axios 包装后的响应对象类型,以及请求配置对象的类型。
  • 封装 Axios 实例:通过 axios.create 方法创建实例,设置请求和响应拦截器,处理全局的请求配置与错误响应。
  • 模块化接口管理:将请求接口根据业务模块划分到不同的文件中(如 user/api.ts),并在组件中调用这些封装好的接口,实现代码的高内聚与低耦合。
6. 前端与后端的交互
  • 示例实现:在 Vue 组件中,通过按钮点击触发 Axios 请求,使用封装后的接口函数发送请求,并在控制台输出服务器返回的数据。通过 GET 请求从 FastAPI 后端获取数据,或通过 POST 请求发送数据到后端。

结论

通过本节课的学习,不仅学会了如何在本地搭建 Vue 3 + TypeScript 的开发环境,还掌握了与 FastAPI 后端的交互方式。更重要的是,了解了如何通过封装 Axios 来优化代码结构,使其更加安全、简洁且易于维护。在解决代码问题的过程中,学会了如何排查和处理常见的前后端交互问题,使得开发过程更加顺畅。


http://www.ppmy.cn/news/1534659.html

相关文章

详解调用钉钉AI助理消息API发送钉钉消息卡片给指定单聊用户

文章目录 前言准备工作1、在钉钉开发者后台创建一个钉钉企业内部应用;2、创建并保存好应用的appKey和appSecret,后面用于获取调用API的请求token;3、了解AI助理主动发送消息API:4、应用中配置好所需权限:4.1、权限点4.…

LampSecurityCTF7 靶机渗透 (sql 注入, 文件上传, 密码喷射)

靶机介绍 LampSecurityCTF7,vulnhub 靶机 主机发现 由于靶机配置问题,扫不到 ip 这里需要特别注意一下,在第一次启动打开靶机的时候,vmware会跳出一个提示框,让你选择我已复制该虚拟机/我已移动该虚拟机&#xff0c…

FinalShell解决Docker日志中文乱码问题

在DockerFile文件末尾添加如下配置即可解决: #解决Docker容器中文显示乱码问题 ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8

空域中低通滤波器和高通滤波器的互补关系——Unsharp masking的理论基础

空域中从一个单位冲激中减去一个低通核产生一个高通核。 对应地,频域中数字滤波器低通转高通可以通过1-低通高通实现。模拟滤波器不行。 从原始图像减去模糊图像称为Unsharp masking。这是Unsharp masking的理论基础。锐化的程度由这个正比例系数控制。

腾讯一面-LRU缓存

为了设计一个满足LRU(最近最少使用)缓存约束的数据结构,我们可以使用哈希表(HashMap)来存储键值对,以便在O(1)时间复杂度内访问任意键。同时,我们还需要一个双向链表(Doubly Linked …

【算法系列-链表】交换链表节点(反转 + 交换)

【算法系列-链表】交换链表节点(反转 交换) 文章目录 【算法系列-链表】交换链表节点(反转 交换)1. 反转链表1.1 思路分析🎯1.2 解题过程🎬1.3 代码示例🌰 2. 两两交换链表中的节点2.1 思路分析🎯2.2 解题过程🎬2.3 …

04DSP学习-利用syscfg配置EPWM

打开syscfg文件,左侧control栏中找到EPWM,点击,发现TI提供了一些帮助文档,帮助了解如何使用syscfg以及如何了解EPWM。我们结合配置过程去理解如何使用。 设计目标 使用EPWM1;增减计数;PWM频率为10kHz&…

多线程-初阶(1)

本节⽬标 • 认识多线程 • 掌握多线程程序的编写 • 掌握多线程的状态 • 掌握什么是线程不安全及解决思路 • 掌握 synchronized、volatile 关键字 1. 认识线程(Thread) 1.1 概念 1) 线程是什么 ⼀个线程就是⼀个 "执⾏流". 每个线…