Tailwind CSS实战:快速构建定制化UI的新思路
引言
在当今快节奏的前端开发环境中,开发者不断寻找能够提高效率并保持灵活性的工具。Tailwind CSS作为一个功能型优先的CSS框架,正在改变开发者构建用户界面的方式。与Bootstrap和Material UI等传统组件库不同,Tailwind不提供预设组件,而是提供原子化的CSS类,使开发者能够直接在HTML中组合这些类来创建独特的设计。
本文将深入探讨Tailwind CSS的核心概念、实战技巧以及如何利用它来构建高度定制化的用户界面,同时保持开发效率和代码一致性。无论你是Tailwind新手还是希望提升技能的经验开发者,本文都将为你提供有价值的见解和实用技巧。
这是我的网站 全部用Tailwind CSS构建
网站尚在建设中
http://mycodeblog.top
适配手机端 平板端 响应式功能
tailwindcss 官网地址
https://tailwindcss.com/
Tailwind CSS的核心优势
在深入代码实践之前,让我们先了解为什么越来越多的开发者和团队选择Tailwind CSS:
- 直观的原子化设计 - 通过组合小型、单一用途的类来构建界面
- 快速原型设计 - 无需切换到CSS文件,直接在HTML中设计
- 响应式设计变得简单 - 内置的断点前缀使响应式设计变得轻松
- 一致性设计系统 - 预配置的设计标记确保项目的视觉一致性
- 高度可定制 - 可以根据项目需求完全定制配置
快速入门
安装Tailwind CSS
首先,让我们设置一个新项目并安装Tailwind CSS:
# 创建项目目录
mkdir tailwind-project
cd tailwind-project# 初始化项目
npm init -y# 安装Tailwind和依赖
npm install -D tailwindcss postcss autoprefixer# 生成配置文件
npx tailwindcss init -p
配置Tailwind
创建配置文件后,我们需要指定内容文件的路径:
// tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {// content选项指定所有包含Tailwind类的文件路径content: ["./src/**/*.{html,js,jsx,ts,tsx}"],theme: {// 这里可以扩展或覆盖Tailwind的默认主题extend: {colors: {// 添加自定义颜色'brand-blue': '#1992d4','brand-dark': '#0d2438',},spacing: {// 添加自定义间距'72': '18rem','84': '21rem',}},},plugins: [// 可以添加官方或第三方插件],
}
创建CSS入口文件
创建一个包含Tailwind指令的CSS文件:
/* src/styles.css */
@tailwind base; /* 注入Tailwind的基础样式 */
@tailwind components; /* 注入组件类 */
@tailwind utilities; /* 注入所有功能类 *//* 自定义CSS可以添加在这里 */
@layer components {/* 创建自定义组件类 */.btn-primary {@apply py-2 px-4 bg-brand-blue text-white font-semibold rounded-lg shadow-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75;}
}
使用JIT模式提高开发效率
Tailwind v3.0引入了即时(JIT)模式,现在默认启用,它带来了几个重要改进:
- 更快的构建时间 - 只生成你实际使用的CSS
- 任意值 - 可以直接在HTML中使用
text-[#bada55]
或w-[32rem]
等任意值 - 所有变体随时可用 - 不需要在配置中启用伪类或响应式变体
响应式设计技巧
Tailwind使响应式设计变得异常简单,它使用一系列断点前缀:
sm:
- 640px及以上md:
- 768px及以上lg:
- 1024px及以上xl:
- 1280px及以上2xl:
- 1536px及以上
例如,创建一个在移动设备上堆叠、在大屏幕上并排显示的卡片布局:
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"><!-- grid-cols-1:移动设备上一列 --><!-- md:grid-cols-2:中等屏幕上两列 --><!-- lg:grid-cols-3:大屏幕上三列 --><div class="bg-white p-4 rounded shadow"><h3 class="font-bold">卡片标题</h3><p class="text-gray-600">卡片内容...</p></div><!-- 重复更多卡片... -->
</div>
高级定制技巧
配置主题变量
Tailwind的一大优势是可以完全定制设计系统。在tailwind.config.js
中,我们可以:
// tailwind.config.js
module.exports = {theme: {// 覆盖默认配置colors: {transparent: 'transparent',current: 'currentColor',black: '#000',white: '#fff',gray: {100: '#f7fafc',// ...其他灰度值900: '#1a202c',},// 自定义品牌颜色brand: {light: '#90cdf4',DEFAULT: '#3182ce',dark: '#2c5282',},},// 扩展默认配置extend: {spacing: {'128': '32rem','144': '36rem',},borderRadius: {'4xl': '2rem',}}}
}
使用插件扩展功能
Tailwind的插件系统允许你扩展框架的功能:
// tailwind.config.js
const plugin = require('tailwindcss/plugin')module.exports = {plugins: [require('@tailwindcss/forms'), // 改进表单样式require('@tailwindcss/typography'), // 添加排版样式// 自定义插件plugin(function({ addUtilities }) {const newUtilities = {'.text-shadow-sm': {textShadow: '1px 1px 2px rgba(0, 0, 0, 0.1)',},'.text-shadow': {textShadow: '2px 2px 4px rgba(0, 0, 0, 0.2)',},'.text-shadow-lg': {textShadow: '4px 4px 8px rgba(0, 0, 0, 0.25)',},}addUtilities(newUtilities, ['hover', 'focus'])})],
}
性能优化建议
生产环境优化
在构建生产版本时,应该优化CSS文件大小:
# 安装cssnano进行CSS压缩
npm install -D cssnano# 在postcss.config.js中配置
module.exports = {plugins: {tailwindcss: {},autoprefixer: {},// 只在生产环境启用cssnano...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})}
}
使用PurgeCSS移除未使用的CSS
Tailwind v3默认已启用JIT模式,只生成使用的类。如果你使用的是旧版本,确保正确配置PurgeCSS:
// tailwind.config.js
module.exports = {purge: {content: ['./src/**/*.html','./src/**/*.js','./src/**/*.jsx',],// 保留某些动态生成的类safelist: ['bg-red-500','text-3xl',/^bg-[a-z]+-\d00$/ // 保留所有颜色背景类]},// 其他配置...
}
工作流程建议
为了最大限度地提高使用Tailwind CSS的效率,这里有一些实用建议:
- 安装编辑器扩展 - 使用VS Code的Tailwind CSS IntelliSense插件获得代码补全
- 学习键盘快捷键 - 熟悉编辑器的Emmet缩写以快速输入类名
- 建立设计系统 - 在团队中标准化颜色、间距和其他设计元素
- 使用版本控制 - 跟踪
tailwind.config.js
的变化,确保团队一致性 - 组件抽象 - 为常用UI模式创建React/Vue组件或模板片段
总结
Tailwind CSS提供了一种全新的UI开发思路,通过原子化的CSS类直接在HTML中构建界面。这种方法虽然初看起来可能有些不同寻常,但它能显著提高开发速度、改善团队协作并创建高度定制化的界面。
使用Tailwind CSS的主要优势包括:
- 开发速度提升 - 直接在HTML中应用样式,减少上下文切换
- 一致性设计 - 预设的设计系统确保视觉一致性
- 响应式设计简化 - 内置的断点前缀使多设备适配变得简单
- 高度可定制 - 通过配置文件完全控制设计系统
- 较小的生产文件 - JIT模式确保只包含使用的CSS
Tailwind CSS代表了CSS开发的未来方向,它平衡了自定义的灵活性和框架的便利性。无论是个人项目还是大型团队协作,掌握Tailwind CSS都将极大提升你的前端开发效率和能力。
即使对于CSS专家,Tailwind也能通过减少重复编写常见模式的时间来提供价值。对于初学者,它提供了一条通往专业级UI设计的捷径,而无需深入学习CSS的所有复杂性。
。
相关文章:
Tailwind CSS实战:快速构建定制化UI的新思路
引言 在当今快节奏的前端开发环境中,开发者不断寻找能够提高效率并保持灵活性的工具。Tailwind CSS作为一个功能型优先的CSS框架,正在改变开发者构建用户界面的方式。与Bootstrap和Material UI等传统组件库不同,Tailwind不提供预设组件&…...
告别手动映射:在 Spring Boot 3 中优雅集成 MapStruct
在日常的后端开发中,我们经常需要在不同的对象之间进行数据转换,例如将数据库实体(Entity)转换为数据传输对象(DTO)发送给前端,或者将接收到的 DTO 转换为实体进行业务处理或持久化。手动进行这…...
JavaScript学习教程,从入门到精通,Ajax数据交换格式与跨域处理(26)
Ajax数据交换格式与跨域处理 一、Ajax数据交换格式 1. XML (eXtensible Markup Language) XML是一种标记语言,类似于HTML但更加灵活,允许用户自定义标签。 特点: 可扩展性强结构清晰数据与表现分离文件体积相对较大 示例代码࿱…...
抖音IP属地跟无线网有关系吗?一文解析
在抖音等社交平台上,IP属地显示功能让许多用户感到好奇——为什么自己的位置信息有时准确,有时却显示在其他城市?这时,用户会疑惑:抖音IP属地跟无线网有关系吗?本文将详细解析IP属地和无线网的概念…...
RDK X3新玩法:超沉浸下棋机器人开发日记
一、项目介绍 产品中文名:超沉浸式智能移动下棋机器人 产品英文名:Hackathon-TTT 产品概念:本项目研发的下棋机器人,是一款能自主移动、具备语音交互并能和玩家在真实的棋盘上进行“人机博弈”的移动下棋平台,能够带给…...
Trae 实测:AI 助力前端开发,替代工具还远吗?
Trae 实测:AI 助力前端开发,替代工具还远吗? 字节上线了一款 AI 新产品,名叫 Trae 。这是一款 IDE 工具,中文意思是「集成开发环境」,做技术的读者对此应该很熟悉。简单理解,就是程序员用来写代…...
SpringCloud基于Eureka和Feign实现一个微服务系统
Spring Cloud 是基于 Spring Boot 的 微服务开发全栈解决方案,通过集成多种开源组件,提供分布式系统构建所需的服务治理、配置管理、容错机制等核心能力,简化微服务架构的复杂性。其核心目标是实现服务间的高效协同与弹性伸缩,支撑企业级云原生应用开发。Spring Clou…...
nacos设置权重进行负载均衡不生效
nacos设置权重进行负载均衡不生效,必须在启动类下加上这个bean Beanpublic IRule nacosRule(){return new NacosRule();}如下图所示...
Flowable7.x学习笔记(十四)查看部署流程Bpmn2.0-xml
前言 Flowable 在其前端 Modeler 中,采用 BPMN 2.0 标准将流程中的任务、网关、事件等元素以 XML 形式存储,并附带图形互换(Diagram Interchange,DI)数据,以保证在前端与后端都能精准重建可视化流程图。 生…...
大模型应用中Agent2Agent(A2A)的应用场景,以及A2A与MCP的区别和适用场景
大家好,我是微学AI,今天给大家介绍一下大模型应用中Agent2Agent(A2A)的应用场景,以及A2A与MCP的区别和适用场景。 文章目录 一、引言二、Agent2Agent(A2A)协议原理2.1 核心架构2.2 基础框架与依…...
Windows server:
企鹅裙:429603659 域搭建 (细节上的问题) 1.将IP地址修改为静态IP,搭建完后设置DNS为本身(在搭建完域服务器后设置DNS) 2.配置之前需将计算机名更改为后面题目中所要求的. 3.一些版本之中比如Windows Server2012之中搭建域之后重启会显示…...
Python 3.14:探索新版本的魅力与革新
在Python编程语言的不断演进中,Python 3.14作为又一重要里程碑,承载着开发者们的期待与热情,悄然走进了我们的视野。尽管在撰写本文时,Python 3.14可能尚未正式成为主流版本(注:实际发布情况需根据最新信息…...
LabVIEW基于VI Server的控件引用操作
本 VI 通过展示控件引用(Control References)的使用,借助 VI Server 实现对前面板对象的编程操作。 详细说明 隐式属性节点(Implicitly Linked Property Node):通过右键单击控件(或其控件终…...
【不同名字的yolo的yaml文件名是什么意思】
以下是这些 YOLO 系列配置文件的详细解析,按版本和功能分类说明: 一、YOLOv3 系列 文件名核心特性适用场景yolov3.yaml原始 YOLOv3 结构,3 尺度预测(13x13,26x26,52x52)通用目标检测yolov3-spp.yaml增加 SPPÿ…...
《100天精通Python——基础篇 2025 第3天:变量与数据类型全面解析,掌握Python核心语法》
目录 一、Python变量的定义和使用二、Python整数类型(int)详解三、Python小数/浮点数(float)类型详解四、Python复数类型(complex)详解---了解五、Python字符串详解(包含长字符串和原始字符串)5.1 处理字符串中的引号5.2 字符串的…...
精益数据分析(24/126):聚焦第一关键指标,驱动创业成功
精益数据分析(24/126):聚焦第一关键指标,驱动创业成功 在创业和数据分析的探索之旅中,我们都在不断寻找能够助力成功的关键因素。今天,我依旧带着与大家共同进步的初心,深入解读《精益数据分析…...
【刷题Day26】Linux命令、分段分页和中断(浅)
说下你常用的 Linux 命令? 文件与目录操作: ls:列出当前目录的文件和子目录,常用参数如-l(详细信息)、-a(包括隐藏文件)cd:切换目录,用于在文件系统中导航m…...
互联网实验室的质量管控痛点 质检LIMS系统在互联网企业的应用
在互联网行业流量红利消退与用户体验至上的时代背景下,产品迭代速度与质量稳定性成为企业核心竞争力的分水岭。传统测试实验室依赖人工操作、碎片化工具与线下沟通的管理模式,已难以应对敏捷开发、多端适配、数据安全等复合型挑战。 一、互联网实验室的…...
VScode远程连接服务器(免密登录)
一、本机生成密钥对 本地终端输入ssh-keygen,生成公钥(id_rsa.pub)和私钥(id_rsa) 二、在远程服务器根目录的.ssh文件夹的authorized_keys中输入id_rsa的内容 三、修改vscode的config文件.ssh/config,加…...
【Go语言】RPC 使用指南(初学者版)
RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许程序调用另一台计算机上的子程序,就像调用本地程序一样。Go 语言内置了 RPC 支持,下面我会详细介绍如何使用。 一、基本概念 在 Go 中&…...
安卓四大组件之ContentProvider
目录 实现步骤 代码分析 onCreate insert query ContextHolder Cursor 作用与用法 基本步骤: 可能的面试题:为什么使用Cursor? 为什么使用Cursor 使用Cursor的好处 静态内部类实现单例模式 AnndroidManifest.xml配置信息 注释的…...
C#中实现XML解析器
XML(可扩展标记语言)是一种广泛用于存储和传输数据的格式,因其具有良好的可读性和可扩展性,在许多领域都有应用。 实现思路: 词法分析 词法分析的目的是将输入的 XML 字符串分解为一个个的词法单元,例如…...
神经符号混合与跨模态对齐:Manus AI如何重构多语言手写识别的技术边界
在全球化数字浪潮下,手写识别技术长期面临"巴别塔困境"——人类书写系统的多样性(从中文象形文字到阿拉伯语连写体)与个体书写风格的随机性,构成了人工智能难以逾越的双重壁垒。传统OCR技术在处理多语言手写场景时,准确率往往不足70%,特别是在医疗处方、古代文…...
TestBrain开源程序是一款集使用AI(如deepseek)大模型自动生成测试用例、和测试用例评审、RAG知识库管理的web平台系统
一、软件介绍 文末提供程序和源码下载 TestBrain开源程序是一款集使用AI(如deepseek)大模型自动生成测试用例、和测试用例评审、RAG知识库管理的web平台系统一个基于LLM的智能测试用例生成平台(功能慢慢丰富中,未来可能将测试相关的所有活动集成到一起),…...
软件工程效率优化:一个分层解耦与熵减驱动的系统框架
软件工程效率优化:一个分层解耦与熵减驱动的系统框架** 摘要 (Abstract) 本报告构建了一个全面、深入、分层的软件工程效率优化框架,旨在超越简单的技术罗列,从根本的价值驱动和熵减原理出发,系统性地探讨提升效率的策略与实践。…...
【金仓数据库征文】- 深耕国产数据库优化,筑牢用户体验新高度
目录 引言 一、性能优化:突破数据处理极限,提升运行效率 1.1 智能查询优化器:精准优化数据检索路径 1.2 并行处理技术:充分释放多核计算潜力 1.3 智能缓存机制:加速数据访问速度 二、稳定性提升:筑牢…...
前端面试常见部分问题,及高阶部分问题
面试中也极有可能让你徒手写代码,无聊的面试问题o( ̄︶ ̄)o 一、HTML/CSS 基础与进阶 常见问题 什么是语义化标签?有哪些常用语义化标签? 答案:语义化标签是指具有明确含义的 HTML 标签,如 <header>、<footer>、<article>、<section> 等。它们有…...
使用 AutoGen 与 Elasticsearch
作者:来自 Elastic Jeffrey Rengifo 学习如何使用 AutoGen 为你的 agent 创建一个 Elasticsearch 工具。 Elasticsearch 拥有与行业领先的生成式 AI 工具和提供商的原生集成。查看我们的网络研讨会,了解如何超越 RAG 基础,或使用 Elastic 向量…...
kafka与flume的整合、spark-streaming
kafka与flume的整合 前期配置完毕,开启集群 需求1: 利用flume监控某目录中新生成的文件,将监控到的变更数据发送给kafka,kafka将收到的数据打印到控制台(三个node01中运行) 1.在kafka中建立topic kafka…...
高级电影感户外街拍人像摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
调色介绍 高级电影感户外街拍人像摄影后期 Lr 调色,是运用 Adobe Lightroom 软件,对户外街拍的人像照片进行后期处理,以塑造出具有电影质感的独特视觉效果。此调色过程借助 Lr 丰富的工具与功能,从色彩、光影、对比度等多维度着手…...
react 常用钩子 hooks 总结
文章目录 React钩子概念图状态管理钩子 state management副作用钩子 effect hooks引用钩子 Ref hooks上下文钩子其他钩子过渡钩子 处理过渡效果性能优化钩子 performance hooksReact 19 新钩子 React钩子概念图 状态管理钩子 state management useState useReducer useSyncEx…...
2025 年导游证报考条件新政策解读与应对策略
2025 年导游证报考政策有了不少新变化,这些变化会对报考者产生哪些影响?我们又该如何应对?下面就为大家详细解读新政策,并提供实用的应对策略。 最引人注目的变化当属中职旅游类专业学生的报考政策。以往,中专学历报考…...
重置 Git 项目并清除提交历史
在某些情况下,你可能需要完全重置一个 Git 项目,清除所有提交历史,然后将当前代码作为全新的初始提交。本文将详细介绍这个过程的操作步骤和注意事项。 重要警告 ⚠️ 注意:以下操作将永久删除项目的所有提交历史、分支和标签。…...
GitHub Copilot (Gen-AI) 很有用,但不是很好
摘要:以下是我在过去三个月中在实际 、 开发中使用 GitHub Copilot Pro 后的想法。由于技术发展迅速,值得注意的是,这些印象是基于我截至 2025 年 3 月的经验。 1 免费试用促使我订阅 GitHub Copilot Pro 我以前读过有关 AI 代码生成器的文…...
K8S Service 原理、案例
一、理论介绍 1.1、3W 法则 1、是什么? Service 是一种为一组功能相同的 pod 提供单一不变的接入点的资源。当 Service 存在时,它的IP地址和端口不会改变。客户端通过IP地址和端口号与 Service 建立连接,这些连接会被路由到提供该 Service 的…...
Base64编码原理:二进制数据与文本的转换技术
🔄 Base64编码原理:二进制数据与文本的转换技术 开发者的数据编码困境 作为开发者,你是否曾遇到这些与Base64相关的挑战: 📊 需要在JSON中传输二进制数据,但不确定如何正确编码🖼️ 想要在HT…...
系统设计(1)—前端—CDN—Nginx—服务集群
简介: 本指南旨涵盖前端、CDN、Nginx 负载均衡、服务集群、Redis 缓存、消息队列、数据库设计、熔断限流降级以及系统优化等模块的核心要点。我们将介绍各模块常见的设计方案与优化策略,并结合电商秒杀、SaaS CRM 系统、支付系统等高并发场景讨论实践技巧…...
Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析
Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析 众所周知,原生 Elasticsearch 默认开启的是 HTTP 明文接口,并且不开启任何身份认证或传输加密。若想启用 TLS/SSL 加密及账号密码验证,通常需要配置繁琐的安…...
在Android中如何使用Protobuf上传协议
在 Android 中使用 Protobuf(Protocol Buffers)主要分为以下几个步骤: ✅ 1. 添加 Protobuf 插件和依赖 在项目的 build.gradle(Project 级)文件中添加 Google 的 Maven 仓库(通常默认已有)&am…...
【数据可视化艺术·应用篇】三维管线分析如何重构城市“生命线“管理?
在智慧城市、能源管理、工业4.0等领域的快速发展中,地下管线、工业管道、电力通信网络等“城市血管”的复杂性呈指数级增长。传统二维管理模式已难以应对跨层级、多维度、动态变化的管线管理需求。三维管线分析技术应运而生,成为破解这一难题的核心工具。…...
2025年的营销趋势-矩阵IP
从 2025 年的营销生态来看,创始人 IP 与智能矩阵的结合确实呈现出颠覆性趋势,这一现象背后隐藏着三个值得深度解析的商业逻辑: 一、创始人 IP 的本质是 "信任货币" 的数字化迁徙 当新能源汽车市场陷入参数混战,雷军将个…...
对接金蝶获取接口授权代码
接口服务信息 using RestSharp; using System.Configuration; using System.Threading.Tasks; public class KingdeeAccessTokenService { private readonly RestClient _client; private readonly KingdeeApiConfig _config; public KingdeeAccessTokenService() …...
探秘 3D 展厅之卓越优势,解锁沉浸式体验新境界
(一)打破时空枷锁,全球触达 3D 展厅的首要优势便是打破了时空限制。在传统展厅中,观众需要亲临现场,且必须在展厅开放的特定时间内参观。而 3D 展厅依托互联网,让观众无论身处世界哪个角落,只…...
prometheus通过Endpoints自定义grafana的dashboard模块
1、prometheus自定义的dashboard模块 文件路径/etc/prometheus/config_out/prometheus-env.yaml - job_name: serviceMonitor/monitoring/pfil/0honor_labels: falsekubernetes_sd_configs:- role: endpointsnamespaces:names:- monitoringrelabel_configs:- source_labels:- …...
java排序算法-计数排序
计数排序的思路 计数排序的基本思路: 确定取值范围: 遍历整个待排序的数组,确定数组中元素的取值范围,找到最小值和最大值。创建计数数组: 创建一个计数数组,其长度为取值范围的大小,用于统计…...
力扣-hot100(滑动窗口最大值)
239. 滑动窗口最大值 困难 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums […...
每日c/c++题 备战蓝桥杯(P1049 [NOIP 2001 普及组] 装箱问题)
洛谷P1049 装箱问题题解:动态规划在背包问题中的经典应用 题目描述 P1049 装箱问题是一道典型的0-1背包问题变种。题目要求在给定箱子容量V和n个物品体积的情况下,选择若干物品装入箱子,使得箱子的剩余空间最小。最终输出这个最小剩余空间的…...
【尚硅谷Redis6】自用学习笔记
Redis介绍 Redis是单线程 多路IO复用技术(类似黄牛买票) 默认有16个库,用select进行切换 默认端口号为6379 Memcached:多线程 锁(数据类型单一,不支持持久化) 五大常用数据类型 Redis key …...
产品更新丨谷云科技ETLCloud V3.9.2版本发布
谷云科技 ETLCloud 集成平台迎来了每月一次的功能迭代,本月发布版本号为 3.9.2 版本,为用户带来了新的功能、优化改进以及问题修复,以下是详细介绍: 新增组件 本次更新新增了众多实用组件,涵盖了京东和 Shopify 相关…...
Promise并发控制与HTTP请求优化
Promise并发方法对比 #mermaid-svg-tnmGzOkgNUCrbvfI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-tnmGzOkgNUCrbvfI .error-icon{fill:#552222;}#mermaid-svg-tnmGzOkgNUCrbvfI .error-text{fill:#552222;stroke…...