当前位置: 首页 > news >正文

【前端】Axios AJAX Fetch

不定期更新,建议关注收藏点赞。


目录

  • Axios
  • AJAX
    • CORS 允许跨域请求
  • Fetch

Axios

  • axios 是一个基于 Promise 的 JavaScript HTTP 客户端,用于浏览器和 Node.js 中发送 HTTP 请求。它提供了一个简单的 API 来发起请求,并处理请求的结果。axios 主要用于与服务器进行数据交互,比如发送 GET、POST、PUT、DELETE 请求等。相比于浏览器原生的 fetch API,axios 提供了更多的功能和便利,特别是在处理请求和响应时。
axios.get('/api/todolist')
.then((res)=>{console.log(res.data);this.setState(()=>{return {list: [...res.data]}})
.catch(()=>{alert('error')})
}
  1. 安装 axios

如果你使用的是 Node.js 或者 React 等项目,首先需要通过 npmyarn 安装 axios

# 使用 npm 安装
npm install axios# 使用 yarn 安装
yarn add axios
  1. 基本用法

axios 提供了多种方法来发送 HTTP 请求,包括 axios.get()axios.post()axios.put()axios.delete()等。

发送 GET 请求

import axios from 'axios';axios.get('https://api.example.com/data').then(response => {console.log(response.data);  // 响应数据}).catch(error => {console.error('Error fetching data:', error);});
  • get 方法用于发送 GET 请求。
  • response.data 包含了从服务器返回的数据。

发送 POST 请求

import axios from 'axios';const data = {name: 'John Doe',email: 'john@example.com'
};axios.post('https://api.example.com/users', data).then(response => {console.log('User created:', response.data);}).catch(error => {console.error('Error posting data:', error);});
  • post 方法用于发送 POST 请求。
  • 请求体中的数据(data)会被发送到服务器。

发送 PUT 请求

import axios from 'axios';const updatedData = {name: 'Jane Doe',email: 'jane@example.com'
};axios.put('https://api.example.com/users/1', updatedData).then(response => {console.log('User updated:', response.data);}).catch(error => {console.error('Error updating data:', error);});
  • put 方法用于发送 PUT 请求。它通常用于更新现有的资源。

发送 DELETE 请求

import axios from 'axios';axios.delete('https://api.example.com/users/1').then(response => {console.log('User deleted:', response.data);}).catch(error => {console.error('Error deleting data:', error);});
  • delete 方法用于删除指定的资源。
  1. 请求配置

axios 支持配置请求的各个方面,如 headers、params、timeout 等。你可以通过第二个参数传递一个配置对象来设置这些选项。

示例:设置请求头

import axios from 'axios';axios.get('https://api.example.com/data', {headers: {'Authorization': 'Bearer your_token_here'}
}).then(response => {console.log(response.data);}).catch(error => {console.error('Error:', error);});

示例:设置请求超时

import axios from 'axios';axios.get('https://api.example.com/data', {timeout: 5000  // 设置超时时间为 5 秒
}).then(response => {console.log(response.data);}).catch(error => {if (error.code === 'ECONNABORTED') {console.log('Request timeout');} else {console.error('Error:', error);}});
  1. 拦截器(Interceptors)

axios 提供了拦截器机制,使得你可以在请求发送之前或响应返回之后执行一些逻辑。

请求拦截器

import axios from 'axios';axios.interceptors.request.use(config => {console.log('Request Interceptor:', config);// 在发送请求之前做些什么,比如添加 token 等config.headers['Authorization'] = 'Bearer your_token_here';return config;
}, error => {return Promise.reject(error);
});

响应拦截器

import axios from 'axios';axios.interceptors.response.use(response => {console.log('Response Interceptor:', response);return response;
}, error => {console.error('Response Error:', error);return Promise.reject(error);
});
  • 请求拦截器可以在请求发送之前修改请求的配置。
  • 响应拦截器可以在响应返回之后处理响应数据或者捕获错误。
  1. 取消请求

有时你可能需要取消一个正在进行的请求,axios 提供了 CancelToken 来实现这一功能。

import axios from 'axios';const cancelToken = axios.CancelToken;
const source = cancelToken.source();axios.get('https://api.example.com/data', {cancelToken: source.token
}).then(response => {console.log(response.data);}).catch(error => {if (axios.isCancel(error)) {console.log('Request canceled:', error.message);} else {console.error('Error:', error);}});// 取消请求
source.cancel('Operation canceled by the user.');
  1. 并发请求

axios 还可以让你同时发送多个请求,并在它们全部完成后进行处理,使用 axios.allaxios.spread 来实现。

import axios from 'axios';const request1 = axios.get('https://api.example.com/data1');
const request2 = axios.get('https://api.example.com/data2');axios.all([request1, request2]).then(axios.spread((response1, response2) => {console.log('Response 1:', response1.data);console.log('Response 2:', response2.data);})).catch(error => {console.error('Error:', error);});
  1. 处理错误

axios 会将所有错误统一通过 catch 捕获。你可以通过 error.response 来访问服务器返回的错误信息。

import axios from 'axios';axios.get('https://api.example.com/data').then(response => {console.log(response.data);}).catch(error => {if (error.response) {// 服务器返回了响应console.error('Response error:', error.response);} else if (error.request) {// 请求已发出但没有收到响应console.error('Request error:', error.request);} else {// 发生了其他错误console.error('Error:', error.message);}});
  • axios v.s. AJAX v.s. fetch

axios 在前端开发中具有较高的使用率,fetch 作为原生 API 也被广泛采用,而 XMLHttpRequest 的使用率相对较低。

特性AJAX (XMLHttpRequest)Fetch APIAxios
基于回调函数PromisePromise
请求响应处理需要手动管理请求状态和解析响应自动解析 JSON,但仍需要手动处理错误自动解析 JSON,无需手动处理响应数据
请求和响应拦截器支持请求和响应拦截器
跨域请求需要额外配置 CORS 头需要额外配置 CORS 头支持自动处理跨域请求(需要后端支持)
请求取消需要使用 AbortController需要使用 AbortController支持请求取消,直接使用 CancelToken
浏览器兼容性在所有浏览器中都能工作,但老旧浏览器不支持大多数现代浏览器支持,但 IE 需要 polyfill支持现代浏览器和 IE(需要 polyfill)
支持的功能基本的 HTTP 请求功能基本的 HTTP 请求功能更丰富的功能:请求/响应拦截器、取消请求等
使用难度相对较复杂,需要手动管理请求状态和响应解析简单,支持 Promise,且 API 直观简单,且有更多的功能和配置选项
  • axios与python requests库
功能Axios (JavaScript)Requests (Python)
异步操作基于 Promise,支持 async/await同步请求,需要配合 aiohttp 异步库
自动解析响应自动解析 JSON自动解析 JSON
请求拦截器/响应拦截器支持请求和响应拦截器不支持直接的拦截器功能
取消请求支持 CancelToken 来取消请求无原生支持取消请求
跨域请求处理跨域请求(CORS)不涉及浏览器,跨域由后端控制
浏览器支持支持现代浏览器仅支持 Python 环境

低级 HTTP 请求通常是指在较低的抽象层次上进行的 HTTP 请求,通常需要开发者手动处理许多细节,例如请求头、参数、响应处理、编码等。相比高级 HTTP 请求,低级 HTTP 请求提供了更多的灵活性和控制,但也要求开发者更了解底层的 HTTP 协议和细节。

python中类似的库:requests、httpx、aiohttp、urllib、pycurl、tornado,后端开发使用。

AJAX

AJAX(Asynchronous JavaScript and XML)本身并不属于 HTML。它是一个基于 JavaScript 的技术,用于实现网页的异步请求和更新。因此,AJAX 更准确地说是 JavaScript 技术,而不是 HTML 技术。
AJAX(Asynchronous JavaScript and XML)是一个用于创建动态和交互式网页的技术,它允许网页在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。这种方式能提高用户体验,因为它使得网页加载更加流畅,用户可以与页面进行交互,而无需等待页面的完全刷新。
尽管它的名字中有 “XML”,但现在 AJAX 主要用于通过 JSON(JavaScript Object Notation)与服务器交换数据。不过,它也支持通过 XML、HTML 或纯文本等格式进行数据交换。

  • AJAX 的工作原理
    AJAX 允许浏览器在后台发送 HTTP 请求到服务器,获取数据并在不刷新页面的情况下更新网页内容。通常,AJAX 使用 JavaScript 与服务器进行通信,通过 XMLHttpRequest 对象或现代的 fetch API 来发送请求。
    AJAX 的基本流程如下:
    用户发起请求(例如,点击按钮或加载页面时)。
    JavaScript 使用 XMLHttpRequest 或 fetch() 向服务器发送请求(GET、POST 等)。
    服务器接收请求,处理数据,并返回响应。
    JavaScript 处理服务器返回的数据,并更新页面内容。

什么是 XMLHttpRequest 对象?
XMLHttpRequest 对象用于在后台与服务器交换数据。
XMLHttpRequest 对象能够:
在不重新加载页面的情况下更新网页
在页面已加载后从服务器请求数据
在页面已加载后从服务器接收数据
在后台向服务器发送数据

responseText 只适用于文本响应。如果服务器返回的是 JSON 或 XML 数据,可以使用 JSON.parse(req.responseText) 来将其转换为 JavaScript 对象,或使用 req.responseXML 获取 XML 格式的响应。

readyState 表示当前请求的状态。
XMLHttpRequest 的请求生命周期有 5 个阶段(0 到 4),表示请求的不同状态:
0 - UNSENT:对象已创建,但尚未调用 open() 方法。
1 - OPENED:已调用 open(),但尚未调用 send()。
2 - HEADERS_RECEIVED:已发送请求,并且已接收到响应头。
3 - LOADING:正在下载响应体。
4 - DONE:响应已完全下载,处理完成。
status 表示 HTTP 响应的状态码。

  • 例子
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>AJAX Example</title>
</head>
<body><h1>AJAX Example</h1><button id="loadData">Load Data</button><div id="result"></div>  <!-- 结果将显示在这里 --><script src="app.js"></script>
</body>
</html>
// 获取按钮和结果展示区域
const button = document.getElementById('loadData');
const result = document.getElementById('result');// 添加点击事件监听器
button.addEventListener('click', function() {// 创建一个新的 XMLHttpRequest 对象const xhr = new XMLHttpRequest();// 配置请求:GET 请求,指向一个 JSON 文件xhr.open('GET', 'data.json', true);  // 异步请求// 设置 onload 事件处理函数xhr.onload = function() {if (xhr.status === 200) {  // 如果请求成功const data = JSON.parse(xhr.responseText);  // 解析返回的 JSON 数据result.innerHTML = `Message: ${data.message}`;  // 显示结果} else {result.innerHTML = 'Error loading data';}};// 发送请求xhr.send();
});

XMLHttpRequest对象的open()方法有3个参数,第一个参数指定是GET还是POST,第二个参数指定URL地址,第三个参数指定是否使用异步,默认是true,所以不用写。
注意,尽量不要把第三个参数指定为false,否则浏览器将停止响应,直到AJAX请求完成。如果这个请求耗时10秒,那么10秒内你会发现浏览器处于“假死”状态。
最后调用send()方法才真正发送请求。GET请求不需要参数,POST请求需要把body部分以字符串或者FormData对象传进去。

  • 上面代码的URL使用的是相对路径。如果你把它改为’http://www.sina.com.cn/',再运行,肯定报错。在Chrome的控制台里,还可以看到错误信息。
    这是因为浏览器的同源策略导致的。默认情况下,JavaScript在发送AJAX请求时,URL的域名必须和当前页面完全一致。
    完全一致的意思是,域名要相同(www.example.com和example.com不同),协议要相同(http和https不同),端口号要相同(默认是:80端口,它和:8080就不同)使用 JavaScript 请求外域(即跨域请求)时,通常会遇到 跨域资源共享 (CORS, Cross-Origin Resource Sharing) 的限制。默认情况下,浏览器会阻止网页发起跨域请求,以保护用户的安全。为了绕过这个限制,目标网站必须明确允许你的域名进行请求。

CORS 允许跨域请求

用JavaScript怎么请求外域(就是其他网站)的URL了呢?

  1. 使用 fetch() API(推荐)
    现代浏览器支持 fetch(),可以发起跨域请求,但前提是目标网站支持 CORS。如果目标网站没有明确设置允许跨域访问,那么请求会被浏览器阻止。如果目标网站支持 CORS 并正确设置了头部(例如 Access-Control-Allow-Origin),请求就会成功。
fetch('https://example.com/data', {method: 'GET',  // 或者 'POST',取决于你的请求类型headers: {'Content-Type': 'application/json'},mode: 'cors'  // 必须设置为 'cors',表示进行跨域请求
}).then(response => response.json())  // 解析 JSON 数据.then(data => console.log(data))    // 处理返回的响应.catch(error => console.error('Error:', error));  // 错误处理fetch('https://example.com').then(response => {if (!response.ok) {throw new Error('Network response was not ok');}return response.text();  // 将响应转换为文本(HTML)}).then(html => {console.log(html);  // 打印出返回的 HTML 文本}).catch(error => {console.error('There has been a problem with your fetch operation:', error);});
  1. 使用 XMLHttpRequest(旧版)
    XMLHttpRequest 是发起 HTTP 请求的传统方式,它也可以用于发起跨域请求,但依赖于目标网站的 CORS 设置。
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/data', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {console.log(JSON.parse(xhr.responseText));}
};
xhr.send();

Fetch

  • 例子:使用 fetch() API 替代 XMLHttpRequest
    fetch() 是现代浏览器提供的一个 API,使用 Promise,比 XMLHttpRequest 更简洁,更强大的功能:fetch() 支持更多的功能,如设置请求头、控制超时等。并且它默认支持异步操作。这里是相同请求的 fetch() 版本:
const button = document.getElementById('loadData');
const result = document.getElementById('result');button.addEventListener('click', function() {// 使用 fetch 发起请求fetch('data.json').then(response => response.json())  // 解析返回的 JSON.then(data => {result.innerHTML = `Message: ${data.message}`;  // 显示数据}).catch(error => {result.innerHTML = 'Error loading data';console.error(error);});
});

相关文章:

【前端】Axios AJAX Fetch

不定期更新&#xff0c;建议关注收藏点赞。 目录 AxiosAJAXCORS 允许跨域请求 Fetch Axios axios 是一个基于 Promise 的 JavaScript HTTP 客户端&#xff0c;用于浏览器和 Node.js 中发送 HTTP 请求。它提供了一个简单的 API 来发起请求&#xff0c;并处理请求的结果。axios …...

测试面试题:以一个登录窗口为例,设计一下登录界面测试的思路和方法

在测试登录窗口时,可以从 表单测试、 逻辑判断和 业务流程三个方面设计测试思路和方法。以下是一个详细的测试方案: 1. 表单测试 表单测试主要关注输入框、按钮等UI元素的正确性和用户体验。 测试点: 输入框测试 用户名和密码输入框是否正常显示。输入框是否支持预期的字符类…...

Android之图片保存相册及分享图片

文章目录 前言一、效果图二、实现步骤1.引入依赖库2.二维码生成3.布局转图片保存或者分享 总结 前言 其实现在很多分享都是我们自定义的&#xff0c;更多的是在界面加了很多东西&#xff0c;然后把整个界面转成图片保存相册和分享&#xff0c;而且现在分享都不需要第三方&…...

EX_25/2/24

写一个三角形类&#xff0c;拥有私有成员 a,b,c 三条边 写好构造函数初始化 abc 以及 abc 的set get 接口 再写一个等腰三角形类&#xff0c;继承自三角形类 1&#xff1a;写好构造函数&#xff0c;初始化三条边 2&#xff1a;要求无论如何&#xff0c;等腰三角形类对象&#x…...

ElasticSearch公共方法封装

业务场景 1、RestClientBuilder初始化&#xff08;同时支持单机与集群&#xff09; 2、发送ES查询请求公共方法封装&#xff08;支持sql、kql、代理访问、集群访问、鉴权支持&#xff09; 3、判断ES索引是否存在&#xff08;/_cat/indices/${indexName}&#xff09; 4、判断ES…...

JVM之JVM的组成

Java 虚拟机&#xff08;JVM&#xff09;是 Java 程序的运行核心&#xff0c;它主要由类加载系统、运行时数据区、执行引擎和本地方法接口这几个关键部分组成。 类加载系统&#xff08;Class Loading System&#xff09; 类加载系统负责在程序运行时动态地将 Java 类加载到 J…...

贪心算法

int a[1000], b5, c8; swap(b, c); // 交换操作 memset(a, 0, sizeof(a)); // 初始化为0或-1 引导问题 为一个小老鼠准备了M磅的猫粮&#xff0c;准备去和看守仓库的猫做交易&#xff0c;因为仓库里有小老鼠喜欢吃的五香豆&#xff0c;第i个房间有J[i] 磅的五香豆&#xf…...

Linux下安装中文输入法总结

Linux下安装中文输入法总结_linux 微软拼音-CSDN博客文章浏览阅读4.2w次&#xff0c;点赞21次&#xff0c;收藏92次。众所周知&#xff0c;fcitx和ibus是两款很好用的Linux中文输入法框架。下面来说一下其安装方法以及会踩的坑。首先fcitx和ibus是不能共存的&#xff0c;两者只…...

人工智能(AI):科技新纪元的领航者

摘要 人工智能&#xff08;AI&#xff09;作为当今科技领域最具变革性的力量之一&#xff0c;正以惊人的速度重塑着我们的世界。本文旨在全面且专业地介绍人工智能&#xff0c;涵盖其定义、发展历程、关键技术、应用领域、面临的挑战以及未来展望等方面&#xff0c;以期为读者…...

c3p0、Druid连接池+工具类 Apache-DbUtils (详解!!!)

数据库连接池是在应用程序启动时创建一定数量的数据库连接&#xff0c;并将这些连接存储在池中。当应用程序需要与数据库通信时&#xff0c;它可以向池中请求一个连接&#xff0c;使用完后将连接归还给池&#xff0c;而不是关闭连接。这样可以减少创建和关闭连接的开销&#xf…...

鸿蒙开发深入浅出03(封装通用LazyForEach实现懒加载)

鸿蒙开发深入浅出03&#xff08;封装通用LazyForEach实现懒加载&#xff09; 1、效果展示2、ets/models/BasicDataSource.ets3、ets/models/HomeData.ets4、ets/api/home.ets5、ets/pages/Home.ets6、ets/views/Home/SwiperLayout.ets7、后端代码 1、效果展示 2、ets/models/Ba…...

AWS - Redshift - 外部表读取 Parquet 文件中 timestamp 类型的数据

问题&#xff1a; 通过 Redshift Spectrum 功能可以读取 S3 中的文件&#xff0c;当读取 Parquet 文件时&#xff0c;如果列格式设置为 timestamp&#xff0c; 通过 psql 客户端读取会出现以下错误&#xff1a; testdb# select * from myspectrum_schema_0219.test_ns; ERROR…...

Ubuntu20.04之VNC的安装使用与常见问题

Ubuntu20.04之VNC的安装与使用 安装图形桌面选择安装gnome桌面选择安装xface桌面 VNC-Server安装配置开机自启 VNC Clientroot用户无法登入问题临时方案永久方案 安装图形桌面 Ubuntu20.04主流的图形桌面有gnome和xface两种&#xff0c;两种桌面的安装方式我都会写&#xff0c…...

vue3学习3-route

创建路由器&#xff1a; 应用路由器&#xff1a; 路由展示区RouterView 和 路由跳转RouterLink&#xff1a; 路由组件&#xff08;在路由配置文件中配置的&#xff09;一般放到pages/views文件夹下 路由组件切换的时候执行的是 挂载/卸载操作 onMounted / onUnmouted 路由器两…...

C++:dfs,bfs各两则

1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒&#xff0c;将它们随机地砍断&#xff0c;使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态&#xff0c;但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…...

RK Android11 WiFi模组 AIC8800 驱动移植流程

RK Android WiFi模组 AIC8800 驱动移植流程 作者&#xff1a;Witheart更新时间&#xff1a;20250220 概要&#xff1a;本文介绍了基于 AIC8800D40 芯片的 WiFi6 模组 BL-M8800DS2-40 在 RK3568 平台上的驱动移植流程。主要涉及环境搭建、驱动代码分析、设备树修改、驱动编译配…...

深度学习-6.用于计算机视觉的深度学习

Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…...

免费送源码:ava+springboot+MySQL 基于springboot 宠物医院管理系统的设计与实现 计算机毕业设计原创定制

摘 要 在当今社会&#xff0c;宠物已经成为人们生活中不可或缺的一部分&#xff0c;因此宠物健康和医疗问题也备受关注。为了更好地管理宠物医院的日常运营和提供优质的医疗服务&#xff0c;本研究设计并实现了一套基于Spring Boot框架的宠物医院管理系统。这一系统集成了多项功…...

【电机控制器】ESP32-C3语言模型——DeepSeek

【电机控制器】ESP32-C3语言模型——DeepSeek 文章目录 [TOC](文章目录) 前言一、简介二、代码三、实验结果四、参考资料总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、简介 二、代码 #include <Arduino.h&g…...

小型字符级语言模型的改进方向和策略

小型字符级语言模型的改进方向和策略 一、回顾小型字符级语言模型的处理流程 前文我们已经从零开始构建了一个小型字符级语言模型,那么如何改进和完善我们的模型呢?有哪些改进的方向?我们先回顾一下模型的流程: 图1 小型字符级语言模型的处理流程 (1)核心模块交互过程:…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...