Ajax基础总结(思维导图+二维表)

一些话

刚开始学习Ajax的时候,感觉很模糊,但是好像学什么都是这样的,很正常,但是当你学习的时候要持续性敲代码,边敲代码其实就可以理解很多了。然后在最后的总结,其实做二维表之后,就可以区分好多相似的东西,做了思维导图之后就很容易把脑子里的东西串成一条线。

所以说,建议大家总结啦

思维导图

这些是总的导图

这是抽取之后的

二维表

使用axios和promise对象实现Ajax有什么区别

axios 是由 promise 封装的一个 http 的库。

回调函数地狱的情况,可以使用Promise解决

|----------|------------------------------|--------------------------------|
| 比较项目 | Axios 实现 Ajax | Promise 对象实现 Ajax(原生方式) |
| 代码复杂度 | 较低,因为 Axios 已经封装了很多功能,代码简洁明了 | 较高,需要自己处理 XMLHttpRequest 的多个细节 |
| 功能丰富度 | 提供自动转换数据、拦截请求 / 响应、跨域支持等高级功能 | 主要实现基本的请求 - 响应功能,高级功能需自己实现 |
| 跨平台性 | 支持浏览器和 Node.js 环境 | 主要用于浏览器环境,在 Node.js 中需要做一些调整 |
| 对请求细节控制 | 相对较少,Axios 已经处理了很多底层细节 | 更多,可以深入定制请求的各个环节 |

await,async和Promise

下面一些图片我忘了从哪找到的了,如果有知道的欢迎在评论区说明

我的二维表

|----------|---------------------------------------------------------------------|----------------------------------------------------------|
| 比较项目 | async和await | Promise |
| 定义 | async用于声明异步函数,返回Promise对象;await只能async函数内使用,暂停函数执行直到Promise状态改变 | 表示尚未完成(或可能已完成)的异步操作的对象,有三种状态,表示异步操作最终的完成(或失败)以及其结果值。 |
| 错误处理 | 在async函数中用try/catch块捕获await表达式中的错误 | 通过catch方法捕获Promise被reject后的错误 |
| 代码风格 | 让异步代码看起来更像同步代码,对于复杂异步流程(如多个异步操作顺序执行和错误处理)结构更清晰,减少嵌套 | 链式调用(then、catch等)可处理多个异步操作顺序和结果,但过多链式调用可能导致代码嵌套深、可读性差 |
| 相互关系 | async函数返回Promise,await用于暂停async函数内部执行等待Promise状态改变,是基于Promise的语法糖 | async和await基于Promise构建,用于更方便地处理Promise |

get和post的区别

|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| | get | post |
| 请求的目的 | 通常用于从服务器检索(获取)数据。它不会修改服务器上的数据。 | 通常用于向服务器发送数据(如提交表单)。它可能会导致服务器上的数据被修改。 |
| 安全性 | GET 方法的参数会暴露在 URL 中 | 而 POST 方法的参数则放在请求体中,相对安全一些。 |
| 参数长度限制 | GET 方法的参数长度有限制,对于只传输少量数据的请求比较适用 | POST 方法没有参数长度限制,适合传输大量数据。 |
| 请求的数据 | 请求的数据(如果有的话)会附加到URL的查询字符串中,并以键值对的形式出现(例如,?key1=value1&key2=value2)。这意味着GET请求的数据长度是有限制的(由浏览器和服务器共同决定,但通常较短),且不适合传输敏感信息(因为URL可能会记录在浏览器历史、服务器日志等地方)。 | 请求的数据会放在请求体中发送,这意味着它可以传输大量数据,且不会受到URL长度的限制。POST请求更适合传输敏感信息,因为请求体通常不会在浏览器历史或服务器日志中记录。 |
| 缓存 | GET 方法的请求会被浏览器缓存,多次请求相同的 URL 时,有可能直接读取缓存中的结果 | 请求通常不会被缓存,因为每次POST请求都可能导致服务器上的数据被修改。 |
| 使用场景 | 通常用于检索数据、查询数据库等不需要修改服务器数据的场景。 | 通常用于提交表单、上传文件、创建新资源等需要修改服务器数据的场景。 |

传参方式data 与 params 的区别

|----------|----------------------------------------------------|----------------------------------|
| 比较项目 | data 参数 | params 参数 |
| 传输方式 | 放在请求体中传输 | 通过 URL 进行传输,拼接在 URL 末尾 |
| 使用场景 | 适用于 POST、PUT、PATCH 等非 GET 请求,用于向服务器提交数据以创建、更新或修改资源 | 主要用于 GET 请求,让服务器根据参数筛选、排序或返回特定资源 |
| 数据大小限制 | 相对没有严格的类似 URL 长度那样的限制(实际受服务器配置等因素影响),更适合大量数据传输 | 受 URL 长度限制,过长 URL 可能导致请求失败 |
| 安全性 | 不在 URL 中显示数据,一定程度上保护隐私和安全性,适合传递敏感信息 | 数据在 URL 上可见,不适合传递敏感信息如密码等 |

同步和异步

|---------|------------------------------------|---------------------------------------|
| 比较项 | 同步 | 异步 |
| 是什么 | 按顺序依次执行任务,后一个任务等待前一个完成。(不等于阻塞) | 不等待任务完成就执行其他任务。 |
| 为什么要用 | 逻辑简单,保证数据一致性。 | 提高性能和效率,提升用户体验。 |
| 在哪用 | 简单计算、顺序依赖强的业务逻辑。 | 网络请求、文件操作、定时器和事件处理。 |
| 怎么用 | 按正常函数调用顺序执行。 | 用回调函数或 Promise(JS)、async/await(其他语言)。 |

相关推荐
mldong6 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排6 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60617 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角8 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!8 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰8 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi10 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen10 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马11 小时前
AI源码分析:拆解模型底层实现逻辑
前端
BillKu11 小时前
全局样式变量:CSS 自定义属性(--border-color)和SCSS 变量($border-color)的说明
javascript·css·scss