TypeScript高级内容

news/2024/9/28 10:21:06 标签: typescript, javascript, 前端

完整总结

本节课涵盖了本地开发环境的搭建、前后端的基本交互、以及如何封装 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.niftyadmin.cn/n/5680887.html

相关文章

ROS理论与实践学习笔记——2 ROS通信机制之通信机制实践

5.1 话题发布 需求描述:编码实现乌龟运动控制,让小乌龟做圆周运动。 实现分析: ①乌龟运动控制实现,关键节点有两个,一个是乌龟运动显示节点 turtlesim_node,另一个是控制节点,二者是订阅发布模…

【开源免费】基于SpringBoot+Vue.JS服装销售平台(JAVA毕业设计)

博主说明:本文项目编号 T 054 ,文末自助获取源码 \color{red}{T054,文末自助获取源码} T054,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

前端开发之代理模式

介绍 代理模式是一种结构型设计模式,它通过为一个对象提供一个代理对象来控制对该对象的访问。代理对象可以在访问真实对象之前或之后添加一些额外的操作。 class RealImg {fileName: string;constructor(fileName: string) {this.fileName fileName;}disPlay()…

DataWhale x南瓜书学习笔记 task04笔记

线性判别分析(LDA) 前提假设:各类样本的协方差矩阵相同且满秩LDA的思想:1.设法让训练样例集投影到一条直线上,2.同类样例的投影点尽可能接近,异类样例的投影点尽可能远离,3.在对新样本进行分类时…

初识C#(四)- 函数或方法

函数就是一个外挂的方法,以便我们自己自定义某个功能 文章目录 前言一、函数的使用1.1 函数的定义和使用1.2 函数参数分为(形参和实参)1.3 函数的返回值 二、函数的递归2.1 调用自身的函数就是递归函数 三、枚举类型3.1 枚举类型的声明与赋值 总结 前言 本篇笔记重…

高度细化的SAGA模式实现:基于Spring Boot与RabbitMQ的跨服务事务

场景与技术栈 场景:电商系统中的订单创建流程,涉及订单服务(Order Service)、库存服务(Inventory Service)、支付服务(Payment Service)。 技术栈: Java 11 Spring Bo…

Redis的主要特点及运用场景

Redis的主要特点及运用场景 Redis(Remote Dictionary Server)是一个开源的高性能键值对(key-value)数据库。它支持多种类型的数据结构,如字符串(strings)、散列(hashes&…

elementui/plus灯下面的指示怎么改成圆圈或者隐藏

改成圆圈的步骤 改成没有indicator-position指示的位置/或者隐藏