ゴゴゴゴゴ
Skip to content
JOJO
首页文章项目知识库相册音乐
全站搜索
  • Navigate
  • Go to Page
  • escClose
© 2026 JOJOBuilt with Next.js

四种声音一个时代

这里收藏周杰伦、王力宏、陶喆与林俊杰的专辑,也把四位创作者放回完整唱片的语境。陶喆以松弛的律动重塑华语 R&B,周杰伦把说唱、古典与中国式旋律带进流行音乐,王力宏在抒情、摇滚和东方元素之间拓宽制作边界,林俊杰则用细密旋律与宽阔声线记录城市情绪。这里不打乱曲序,也不把专辑压缩成热门单曲;挑一张封面,从第一首听到最后一首,感受开场、中段与尾声如何共同完成一段叙事。

左右滑动浏览,轻触封面,从第一首开始听

正在播放的唱片

选择一首歌曲查看歌词
专辑封面

专辑

    请选择一张唱片等待选曲
    0:00
    0:00

    键盘快捷键

    搜索
    / 或 ⌘K
    回到首页
    G H
    博客列表
    G B
    切换主题
    T
    关闭弹窗
    Esc
    显示帮助
    ?

    按 Esc 关闭此窗口

    Blog550
    • 全部文章(550)
    • 包管理工具(8)
      • Bun 完全指南
      • fnm 完全指南
      • ni 完全指南
      • npm 完全指南
      • nrm 完全指南
      • nvm 完全指南
      • pnpm 完全指南
      • Yarn 完全指南
    • 并发异步(7)
      • 异步任务取消机制
      • Promise静态方法汇总
      • 封装超时工具方法
      • 并发与并行
      • 封装并发任务方法
      • 一道并发相关的面试题
      • 文件写入的原子化与并发操作
    • 打包工具(10)
      • Bun - 全栈 JavaScript 运行时与打包器
      • esbuild - 用 Go 写的极速打包器
      • Parcel - 零配置的极速打包工具
      • Rolldown - Vite 团队打造的 Rust 打包器
      • Rollup - 专注于库开发的打包工具
      • Rspack - Rust 驱动的 Webpack 替代品
      • SWC - Rust 驱动的超快编译器
      • Turbopack - Rust 驱动的下一代打包工具
      • Vite - 下一代前端构建工具
      • Webpack - 功能最强大的模块打包器
    • 算法(74)
      • 课程必看
      • 算法基本概念
      • 评判算法的好坏
      • 复习对数
      • 常见的复杂度
      • 常见算法思维
      • 递归
      • 数据结构
      • 数组结构
      • 顺序查找
      • 二分查找
      • 插值查找
      • 冒泡排序
      • 选择排序
      • 插入排序
      • 折半插入排序
      • 希尔排序
      • 归并排序
      • 快速排序
      • 链表结构
      • 双向链表
      • 单向循环链表
      • 双向循环链表
      • 栈结构
      • 队列结构
      • 循环队列
      • 击鼓传花游戏
      • 双端队列
      • 回文检查器
      • 集合结构
      • 字典结构
      • 树结构
      • 二叉树
      • 二叉树遍历
      • 前序中序还原二叉树
      • 后序中序还原二叉树
      • 二叉树深度优先搜索
      • 二叉树广度优先搜索
      • 二叉树的比较
      • 二叉树diff算法
      • 二叉搜索树
      • 二叉搜索树常见操作
      • 平衡二叉树
      • 二叉树左单旋
      • 二叉树右单旋
      • 二叉树双旋
      • 二叉堆
      • 堆排序
      • 哈夫曼树
      • 图结构
      • 邻接矩阵
      • 邻接表
      • 构建图
      • 图的深度优先搜索
      • 图的广度优先搜索
      • 普里姆算法
      • 克鲁斯卡尔算法
      • LRU算法
      • 动态规划
      • 青蛙跳台阶
      • 不同路径问题
      • 凑零钱问题
      • 打家劫舍
      • 背包问题
      • 回溯算法
      • 数字组合
      • 电话号码字母组合
      • 复原IP地址
      • 数组子集
      • 贪心算法
      • 柠檬水找零
      • 摆动序列
      • 分发糖果
      • 跳跃游戏
    • 文档协同(12)
      • 课程说明
      • 文档协同常见方案
      • OT冲突算法
      • CRDT冲突算法
      • CRDT数据结构
      • 文章翻译
      • Yjs基础介绍
      • Yjs快速上手
      • Yjs细节补充
      • 监听机制
      • 标签页同步
      • WebSocket基础知识
    • 项目实战(1)
      • ShipAny:1小时开发海外游客「中国攻略 + AI旅游助手」SaaS网站
    • AI工具(9)
      • Claude Code 完全指南
      • ComfyUI 完全指南
      • GitHub Copilot 入门指南
      • Coze 完全指南
      • Cursor vs GitHub Copilot 全面对比
      • Cursor-完整指南
      • Dify 完全指南
      • Droid 完全指南
      • n8n 完全指南
    • Astro(5)
      • Astro 入门指南
      • Astro 路由与页面
      • Astro 组件与样式
      • Astro 内容集合
      • Astro 集成与部署
    • CSS(25)
      • CSS 选择器基础
      • CSS 盒模型
      • CSS 定位与层叠
      • 浮动与 BFC
      • Flexbox 布局
      • Grid 布局
      • 响应式设计
      • 伪类与伪元素
      • 现代选择器
      • CSS 变量
      • 层叠层
      • 过渡效果
      • CSS 动画
      • 变换与滤镜
      • 容器查询
      • 文字与排版
      • 背景与渐变
      • 滚动与溢出
      • 裁剪与遮罩
      • 颜色系统
      • 边框与阴影
      • 逻辑属性
      • CSS 函数
      • 多列布局
      • 用户交互
    • ES6+(40)
      • let 和 const 命令
      • 解构赋值基础
      • 解构赋值进阶
      • 字符串的扩展
      • 字符串新增方法
      • 正则表达式扩展
      • 数值的扩展
      • BigInt 大整数
      • 函数默认参数
      • rest 参数与扩展运算符
      • 箭头函数详解
      • 尾调用优化
      • 数组扩展方法
      • 数组新增方法
      • 数组不可变方法
      • 对象的扩展
      • Object 新增方法
      • Symbol 基础
      • Symbol 进阶应用
      • Set 数据结构
      • Map 数据结构
      • TypedArray 类型化数组
      • Proxy 基础
      • Proxy 进阶应用
      • Reflect 元编程
      • 元编程实战案例
      • 装饰器 Decorator
      • Iterator 迭代器
      • Generator 基础
      • Generator 进阶
      • Promise 基础
      • Promise 进阶
      • async 函数
      • await 与错误处理
      • 异步迭代
      • Class 基础
      • Class 继承
      • Module 语法
      • Module 加载
      • ES 新特性汇总
    • HTML(8)
      • HTML 入门:构建 Web 的基石
      • HTML5 语义化:让页面更有意义
      • HTML 表单基础:用户交互的起点
      • HTML 表单进阶:验证与现代特性
      • HTML 多媒体:音视频与响应式图片
      • HTML APIs(上):客户端存储完全指南
      • HTML APIs(下):交互与设备能力
      • Canvas 与 SVG:Web 图形绘制入门
    • JavaScript(30)
      • JavaScript 简介
      • 变量与数据类型
      • 运算符
      • 类型转换
      • 控制流语句
      • 函数基础
      • 对象基础
      • 数组基础
      • 原型与原型链
      • this 关键字
      • 面向对象编程
      • 作用域
      • 闭包
      • 执行上下文
      • DOM 选择器
      • DOM 操作
      • 事件处理
      • 事件委托
      • 错误处理
      • 调试技巧
      • 正则表达式
      • Date 日期对象
      • Math 对象
      • 定时器
      • JSON 处理
      • BOM 基础
      • 本地存储
      • 表单处理
      • AJAX 与 Fetch
      • 严格模式
    • Langchain(37)
      • Langchain基本介绍
      • 模型接口
      • 缓存
      • 提示词模板
      • 结构化提示词
      • Message消息对象
      • 消息占位
      • LCEL
      • 并发流式返回结果
      • Runnable接口
      • 条件路由
      • 字符串解析器
      • 结构化输出解析器
      • 列表输出解析器
      • JSON解析器
      • 正则解析器
      • 本地资源Loader
      • Web资源Loader
      • 文本切割
      • 嵌入处理
      • 内存型向量库
      • 检索优化
      • RAG实践
      • Memory基础
      • 自动维护聊天记录
      • 实现长程记忆
      • 持久化记忆
      • 第三方存储
      • Tools基础
      • Tools配置
      • Zod基础
      • LangChain中使用工具
      • 重新认识Agent
      • LangChain中创建Agent
      • Agent实践
      • 回退机制
      • 回调机制
    • LLM(34)
      • LLM发展历史
      • N-Gram模型
      • 词袋模型
      • 词元
      • 嵌入
      • Transformer内部结构
      • Transformer解码策略
      • Transformer块
      • 本地部署大模型
      • Agent
      • 流式返回信息
      • 支持上下文
      • 获取实时消息
      • 外接DeepSeek
      • Function Calling
      • MCP理论知识
      • Resources
      • Schema
      • 注册资源模板
      • Prompts
      • 监听资源更新
      • 远程通信方式
      • MCP Client
      • 大模型幻觉
      • RCT构词法
      • 提示词常见技巧
      • 基于反馈迭代优化
      • 改善提示效果
      • 提示词评估工具
      • RAG基础知识
      • RAG实践
      • RAG架构演进
      • 大模型微调
      • LoRA微调
    • MCP(8)
      • MCP 入门:连接 AI 与外部世界的桥梁
      • 搭建第一个 MCP Server
      • MCP Tools 深入:让 AI 具备行动能力
      • MCP Resources:向 AI 暴露数据
      • MCP Prompts:预定义 AI 交互模板
      • MCP Transport 与部署
      • 构建 MCP Client:集成到你的应用
      • 实战:构建文档助手 MCP Server
    • Nest(31)
      • 快速上手Nest Cli
      • 三层架构与MVC
      • IoC
      • Nest中的装饰器
      • 模块的基本概念
      • 什么是AOP
      • 中间件与守卫
      • 拦截器
      • 文件上传
      • 自定义装饰器
      • mysql相关回顾
      • 对于ORM的理解
      • 快速上手Redis
      • Nest中使用Redis
      • 状态保存方式
      • Nest中实现Session与JWT
      • JWT登录注册后端处理
      • 使用Passport与循环引用问题
      • 通过环境变量获取配置信息
      • RBAC权限设计1
      • RBAC权限设计2
      • Nest中使用Websocket
      • 日志处理
      • 面向切面的日志处理
      • 快速入门GraphQL
      • Nest中使用GraphQL
      • Swagger API文档
      • 单元测试与E2E测试
      • 安全防护实践
      • 定时任务与任务调度
      • Bull队列与异步任务
    • Next(36)
      • Next.js 简介
      • 项目创建与配置
      • App Router 概述
      • 创建第一个页面
      • 开发工具与调试
      • TypeScript 配置
      • 文件系统路由
      • 动态路由
      • 嵌套路由与布局
      • 路由组
      • 并行路由
      • 拦截路由
      • 导航与链接
      • 中间件
      • Server Components
      • Client Components
      • 混合渲染模式
      • Streaming 与 Suspense
      • 静态与动态渲染
      • 数据获取基础
      • 缓存策略
      • Server Actions
      • Route Handlers
      • 数据库集成
      • 错误处理
      • 图片优化
      • 字体优化
      • 脚本优化
      • 元数据与 SEO
      • 性能分析
      • 认证基础
      • NextAuth 集成
      • 环境变量与配置
      • 测试策略
      • 部署方案
      • 项目实战
    • Nuxt(36)
      • web应用变迁史
      • 课程说明
      • SSR初体验
      • 水合操作
      • 改造CSR项目
      • 基本介绍
      • 配置概览
      • 组件类型
      • Nuxt模块
      • 嵌套路由
      • 动态路由
      • 请求数据
      • server目录
      • 应用部署
      • 中间件
      • 插件
      • layers
      • 过渡
      • 状态管理
      • 全匹配路由
      • 路由补充知识
      • 自定义路由
      • 自定义模块
      • 自定义指令
      • meta相关处理
      • 渲染模式
      • 错误处理
      • 不同阶段错误
      • 客户端渲染组件
      • 其余内置组件
      • 配置相关细节
      • 常用组合式函数
      • 服务器引擎
      • NuxtUI
      • SSR注意事项
      • 课程收官
    • React(55)
      • 序章:React课程介绍
      • React 基本介绍
      • JSX 基础语法
      • 组件与事件绑定
      • 组件状态与数据传递
      • 表单
      • 生命周期
      • Hooks
      • React-router介绍
      • React-router v版本学生管理系统课堂笔记
      • React-redux 介绍
      • Antd介绍
      • coder station前台系统笔记
      • coder station 后台系统笔记
      • Antd Pro介绍
      • Dva介绍
      • Umi.js 介绍
      • 属性默认值和类型验证
      • 高阶组件
      • Ref
      • Context
      • Render Props
      • Portals
      • 错误边界
      • 组件渲染性能优化
      • 前端框架的理解
      • Scheduler调度延时任务
      • 最小堆
      • React中的位运算
      • beginWork工作流程
      • completeWork工作流程
      • 图解diff算法
      • commit 工作流程
      • lane模型
      • React 中的事件
      • Hooks原理
      • React和Vue描述页面的区别
      • useState和useReducer
      • effect相关hook
      • useCallback和useMemo
      • useRef
      • Update
      • 性能优化策略之eagerState
      • 性能优化策略之bailout
      • bailout和ContextAPI
      • 性能优化对日常开发启示
      • 前端框架的分类
      • 虚拟 DOM
      • React 整体架构
      • React 渲染流程
      • Fiber双缓冲
      • MessageChannel
      • Scheduler调度普通任务
      • 课程介绍
      • 课程总结
    • ReactNative(33)
      • RN 基本介绍
      • 快速搭建 RN 开发环境
      • 复习 React 基础知识
      • RN 基础知识
      • 实战案例
      • RN 内置基础组件
      • 容器组件
      • Pressable 组件
      • 列表组件
      • 功能组件
      • 第三方组件库
      • 自定义组件案例:弹框组件
      • 自定义组件案例:单选组件
      • 基础API
      • 屏幕API
      • 设备API
      • 动画API
      • 手势API
      • React Navigation简介
      • 参数传递和标题栏信息配置
      • 嵌套路由与生命周期
      • 其他类型的导航
      • 状态管理介绍
      • Redux
      • 其他第三方库
      • Expo SDK
      • Fabric 架构
      • 渲染、提交和挂载
      • 实现跨平台
      • 扁平化视图
      • 线程模型
      • 如何打包发布应用
      • 通过 React Native CLI 搭建环境
    • TailwindCSS(7)
      • TailwindCSS基础介绍
      • 环境搭建与配置
      • 布局系统
      • 间距与尺寸系统
      • 颜色与主题
      • 响应式设计
      • 交互与动画
    • TypeScript(35)
      • 初识 TypeScript
      • 基础类型
      • 数组与元组
      • 对象类型
      • 函数类型
      • 类型推断与断言
      • 联合类型与交叉类型
      • 字面量类型与类型别名
      • 接口基础
      • 接口进阶
      • 接口继承与实现
      • 类基础
      • 类的访问修饰符
      • 类的继承
      • 类与接口对比
      • 泛型基础
      • 泛型接口与泛型类
      • 泛型约束
      • 内置工具类型(上)
      • 内置工具类型(下)
      • 泛型实战
      • 类型守卫
      • 类型收窄
      • 索引类型与索引签名
      • 映射类型
      • 条件类型
      • infer 关键字
      • 模板字面量类型
      • 模块系统
      • 命名空间
      • 声明文件基础
      • 声明文件进阶
      • tsconfig 配置详解
      • 类型体操入门
      • TypeScript 最佳实践
    • 杂谈(9)
      • Cloudflare 全栈部署指南
      • Creem 支付集成指南
      • Dokploy 自托管部署指南
      • GitHub OAuth 登录集成指南
      • Google OAuth 登录集成指南
      • Stripe 支付集成指南
      • Supabase 完全指南
      • Vercel 自动化部署指南
      • Zeabur 部署指南
    • 全部文章(550)
    • 包管理工具(8)
      • Bun 完全指南
      • fnm 完全指南
      • ni 完全指南
      • npm 完全指南
      • nrm 完全指南
      • nvm 完全指南
      • pnpm 完全指南
      • Yarn 完全指南
    • 并发异步(7)
      • 异步任务取消机制
      • Promise静态方法汇总
      • 封装超时工具方法
      • 并发与并行
      • 封装并发任务方法
      • 一道并发相关的面试题
      • 文件写入的原子化与并发操作
    • 打包工具(10)
      • Bun - 全栈 JavaScript 运行时与打包器
      • esbuild - 用 Go 写的极速打包器
      • Parcel - 零配置的极速打包工具
      • Rolldown - Vite 团队打造的 Rust 打包器
      • Rollup - 专注于库开发的打包工具
      • Rspack - Rust 驱动的 Webpack 替代品
      • SWC - Rust 驱动的超快编译器
      • Turbopack - Rust 驱动的下一代打包工具
      • Vite - 下一代前端构建工具
      • Webpack - 功能最强大的模块打包器
    • 算法(74)
      • 课程必看
      • 算法基本概念
      • 评判算法的好坏
      • 复习对数
      • 常见的复杂度
      • 常见算法思维
      • 递归
      • 数据结构
      • 数组结构
      • 顺序查找
      • 二分查找
      • 插值查找
      • 冒泡排序
      • 选择排序
      • 插入排序
      • 折半插入排序
      • 希尔排序
      • 归并排序
      • 快速排序
      • 链表结构
      • 双向链表
      • 单向循环链表
      • 双向循环链表
      • 栈结构
      • 队列结构
      • 循环队列
      • 击鼓传花游戏
      • 双端队列
      • 回文检查器
      • 集合结构
      • 字典结构
      • 树结构
      • 二叉树
      • 二叉树遍历
      • 前序中序还原二叉树
      • 后序中序还原二叉树
      • 二叉树深度优先搜索
      • 二叉树广度优先搜索
      • 二叉树的比较
      • 二叉树diff算法
      • 二叉搜索树
      • 二叉搜索树常见操作
      • 平衡二叉树
      • 二叉树左单旋
      • 二叉树右单旋
      • 二叉树双旋
      • 二叉堆
      • 堆排序
      • 哈夫曼树
      • 图结构
      • 邻接矩阵
      • 邻接表
      • 构建图
      • 图的深度优先搜索
      • 图的广度优先搜索
      • 普里姆算法
      • 克鲁斯卡尔算法
      • LRU算法
      • 动态规划
      • 青蛙跳台阶
      • 不同路径问题
      • 凑零钱问题
      • 打家劫舍
      • 背包问题
      • 回溯算法
      • 数字组合
      • 电话号码字母组合
      • 复原IP地址
      • 数组子集
      • 贪心算法
      • 柠檬水找零
      • 摆动序列
      • 分发糖果
      • 跳跃游戏
    • 文档协同(12)
      • 课程说明
      • 文档协同常见方案
      • OT冲突算法
      • CRDT冲突算法
      • CRDT数据结构
      • 文章翻译
      • Yjs基础介绍
      • Yjs快速上手
      • Yjs细节补充
      • 监听机制
      • 标签页同步
      • WebSocket基础知识
    • 项目实战(1)
      • ShipAny:1小时开发海外游客「中国攻略 + AI旅游助手」SaaS网站
    • AI工具(9)
      • Claude Code 完全指南
      • ComfyUI 完全指南
      • GitHub Copilot 入门指南
      • Coze 完全指南
      • Cursor vs GitHub Copilot 全面对比
      • Cursor-完整指南
      • Dify 完全指南
      • Droid 完全指南
      • n8n 完全指南
    • Astro(5)
      • Astro 入门指南
      • Astro 路由与页面
      • Astro 组件与样式
      • Astro 内容集合
      • Astro 集成与部署
    • CSS(25)
      • CSS 选择器基础
      • CSS 盒模型
      • CSS 定位与层叠
      • 浮动与 BFC
      • Flexbox 布局
      • Grid 布局
      • 响应式设计
      • 伪类与伪元素
      • 现代选择器
      • CSS 变量
      • 层叠层
      • 过渡效果
      • CSS 动画
      • 变换与滤镜
      • 容器查询
      • 文字与排版
      • 背景与渐变
      • 滚动与溢出
      • 裁剪与遮罩
      • 颜色系统
      • 边框与阴影
      • 逻辑属性
      • CSS 函数
      • 多列布局
      • 用户交互
    • ES6+(40)
      • let 和 const 命令
      • 解构赋值基础
      • 解构赋值进阶
      • 字符串的扩展
      • 字符串新增方法
      • 正则表达式扩展
      • 数值的扩展
      • BigInt 大整数
      • 函数默认参数
      • rest 参数与扩展运算符
      • 箭头函数详解
      • 尾调用优化
      • 数组扩展方法
      • 数组新增方法
      • 数组不可变方法
      • 对象的扩展
      • Object 新增方法
      • Symbol 基础
      • Symbol 进阶应用
      • Set 数据结构
      • Map 数据结构
      • TypedArray 类型化数组
      • Proxy 基础
      • Proxy 进阶应用
      • Reflect 元编程
      • 元编程实战案例
      • 装饰器 Decorator
      • Iterator 迭代器
      • Generator 基础
      • Generator 进阶
      • Promise 基础
      • Promise 进阶
      • async 函数
      • await 与错误处理
      • 异步迭代
      • Class 基础
      • Class 继承
      • Module 语法
      • Module 加载
      • ES 新特性汇总
    • HTML(8)
      • HTML 入门:构建 Web 的基石
      • HTML5 语义化:让页面更有意义
      • HTML 表单基础:用户交互的起点
      • HTML 表单进阶:验证与现代特性
      • HTML 多媒体:音视频与响应式图片
      • HTML APIs(上):客户端存储完全指南
      • HTML APIs(下):交互与设备能力
      • Canvas 与 SVG:Web 图形绘制入门
    • JavaScript(30)
      • JavaScript 简介
      • 变量与数据类型
      • 运算符
      • 类型转换
      • 控制流语句
      • 函数基础
      • 对象基础
      • 数组基础
      • 原型与原型链
      • this 关键字
      • 面向对象编程
      • 作用域
      • 闭包
      • 执行上下文
      • DOM 选择器
      • DOM 操作
      • 事件处理
      • 事件委托
      • 错误处理
      • 调试技巧
      • 正则表达式
      • Date 日期对象
      • Math 对象
      • 定时器
      • JSON 处理
      • BOM 基础
      • 本地存储
      • 表单处理
      • AJAX 与 Fetch
      • 严格模式
    • Langchain(37)
      • Langchain基本介绍
      • 模型接口
      • 缓存
      • 提示词模板
      • 结构化提示词
      • Message消息对象
      • 消息占位
      • LCEL
      • 并发流式返回结果
      • Runnable接口
      • 条件路由
      • 字符串解析器
      • 结构化输出解析器
      • 列表输出解析器
      • JSON解析器
      • 正则解析器
      • 本地资源Loader
      • Web资源Loader
      • 文本切割
      • 嵌入处理
      • 内存型向量库
      • 检索优化
      • RAG实践
      • Memory基础
      • 自动维护聊天记录
      • 实现长程记忆
      • 持久化记忆
      • 第三方存储
      • Tools基础
      • Tools配置
      • Zod基础
      • LangChain中使用工具
      • 重新认识Agent
      • LangChain中创建Agent
      • Agent实践
      • 回退机制
      • 回调机制
    • LLM(34)
      • LLM发展历史
      • N-Gram模型
      • 词袋模型
      • 词元
      • 嵌入
      • Transformer内部结构
      • Transformer解码策略
      • Transformer块
      • 本地部署大模型
      • Agent
      • 流式返回信息
      • 支持上下文
      • 获取实时消息
      • 外接DeepSeek
      • Function Calling
      • MCP理论知识
      • Resources
      • Schema
      • 注册资源模板
      • Prompts
      • 监听资源更新
      • 远程通信方式
      • MCP Client
      • 大模型幻觉
      • RCT构词法
      • 提示词常见技巧
      • 基于反馈迭代优化
      • 改善提示效果
      • 提示词评估工具
      • RAG基础知识
      • RAG实践
      • RAG架构演进
      • 大模型微调
      • LoRA微调
    • MCP(8)
      • MCP 入门:连接 AI 与外部世界的桥梁
      • 搭建第一个 MCP Server
      • MCP Tools 深入:让 AI 具备行动能力
      • MCP Resources:向 AI 暴露数据
      • MCP Prompts:预定义 AI 交互模板
      • MCP Transport 与部署
      • 构建 MCP Client:集成到你的应用
      • 实战:构建文档助手 MCP Server
    • Nest(31)
      • 快速上手Nest Cli
      • 三层架构与MVC
      • IoC
      • Nest中的装饰器
      • 模块的基本概念
      • 什么是AOP
      • 中间件与守卫
      • 拦截器
      • 文件上传
      • 自定义装饰器
      • mysql相关回顾
      • 对于ORM的理解
      • 快速上手Redis
      • Nest中使用Redis
      • 状态保存方式
      • Nest中实现Session与JWT
      • JWT登录注册后端处理
      • 使用Passport与循环引用问题
      • 通过环境变量获取配置信息
      • RBAC权限设计1
      • RBAC权限设计2
      • Nest中使用Websocket
      • 日志处理
      • 面向切面的日志处理
      • 快速入门GraphQL
      • Nest中使用GraphQL
      • Swagger API文档
      • 单元测试与E2E测试
      • 安全防护实践
      • 定时任务与任务调度
      • Bull队列与异步任务
    • Next(36)
      • Next.js 简介
      • 项目创建与配置
      • App Router 概述
      • 创建第一个页面
      • 开发工具与调试
      • TypeScript 配置
      • 文件系统路由
      • 动态路由
      • 嵌套路由与布局
      • 路由组
      • 并行路由
      • 拦截路由
      • 导航与链接
      • 中间件
      • Server Components
      • Client Components
      • 混合渲染模式
      • Streaming 与 Suspense
      • 静态与动态渲染
      • 数据获取基础
      • 缓存策略
      • Server Actions
      • Route Handlers
      • 数据库集成
      • 错误处理
      • 图片优化
      • 字体优化
      • 脚本优化
      • 元数据与 SEO
      • 性能分析
      • 认证基础
      • NextAuth 集成
      • 环境变量与配置
      • 测试策略
      • 部署方案
      • 项目实战
    • Nuxt(36)
      • web应用变迁史
      • 课程说明
      • SSR初体验
      • 水合操作
      • 改造CSR项目
      • 基本介绍
      • 配置概览
      • 组件类型
      • Nuxt模块
      • 嵌套路由
      • 动态路由
      • 请求数据
      • server目录
      • 应用部署
      • 中间件
      • 插件
      • layers
      • 过渡
      • 状态管理
      • 全匹配路由
      • 路由补充知识
      • 自定义路由
      • 自定义模块
      • 自定义指令
      • meta相关处理
      • 渲染模式
      • 错误处理
      • 不同阶段错误
      • 客户端渲染组件
      • 其余内置组件
      • 配置相关细节
      • 常用组合式函数
      • 服务器引擎
      • NuxtUI
      • SSR注意事项
      • 课程收官
    • React(55)
      • 序章:React课程介绍
      • React 基本介绍
      • JSX 基础语法
      • 组件与事件绑定
      • 组件状态与数据传递
      • 表单
      • 生命周期
      • Hooks
      • React-router介绍
      • React-router v版本学生管理系统课堂笔记
      • React-redux 介绍
      • Antd介绍
      • coder station前台系统笔记
      • coder station 后台系统笔记
      • Antd Pro介绍
      • Dva介绍
      • Umi.js 介绍
      • 属性默认值和类型验证
      • 高阶组件
      • Ref
      • Context
      • Render Props
      • Portals
      • 错误边界
      • 组件渲染性能优化
      • 前端框架的理解
      • Scheduler调度延时任务
      • 最小堆
      • React中的位运算
      • beginWork工作流程
      • completeWork工作流程
      • 图解diff算法
      • commit 工作流程
      • lane模型
      • React 中的事件
      • Hooks原理
      • React和Vue描述页面的区别
      • useState和useReducer
      • effect相关hook
      • useCallback和useMemo
      • useRef
      • Update
      • 性能优化策略之eagerState
      • 性能优化策略之bailout
      • bailout和ContextAPI
      • 性能优化对日常开发启示
      • 前端框架的分类
      • 虚拟 DOM
      • React 整体架构
      • React 渲染流程
      • Fiber双缓冲
      • MessageChannel
      • Scheduler调度普通任务
      • 课程介绍
      • 课程总结
    • ReactNative(33)
      • RN 基本介绍
      • 快速搭建 RN 开发环境
      • 复习 React 基础知识
      • RN 基础知识
      • 实战案例
      • RN 内置基础组件
      • 容器组件
      • Pressable 组件
      • 列表组件
      • 功能组件
      • 第三方组件库
      • 自定义组件案例:弹框组件
      • 自定义组件案例:单选组件
      • 基础API
      • 屏幕API
      • 设备API
      • 动画API
      • 手势API
      • React Navigation简介
      • 参数传递和标题栏信息配置
      • 嵌套路由与生命周期
      • 其他类型的导航
      • 状态管理介绍
      • Redux
      • 其他第三方库
      • Expo SDK
      • Fabric 架构
      • 渲染、提交和挂载
      • 实现跨平台
      • 扁平化视图
      • 线程模型
      • 如何打包发布应用
      • 通过 React Native CLI 搭建环境
    • TailwindCSS(7)
      • TailwindCSS基础介绍
      • 环境搭建与配置
      • 布局系统
      • 间距与尺寸系统
      • 颜色与主题
      • 响应式设计
      • 交互与动画
    • TypeScript(35)
      • 初识 TypeScript
      • 基础类型
      • 数组与元组
      • 对象类型
      • 函数类型
      • 类型推断与断言
      • 联合类型与交叉类型
      • 字面量类型与类型别名
      • 接口基础
      • 接口进阶
      • 接口继承与实现
      • 类基础
      • 类的访问修饰符
      • 类的继承
      • 类与接口对比
      • 泛型基础
      • 泛型接口与泛型类
      • 泛型约束
      • 内置工具类型(上)
      • 内置工具类型(下)
      • 泛型实战
      • 类型守卫
      • 类型收窄
      • 索引类型与索引签名
      • 映射类型
      • 条件类型
      • infer 关键字
      • 模板字面量类型
      • 模块系统
      • 命名空间
      • 声明文件基础
      • 声明文件进阶
      • tsconfig 配置详解
      • 类型体操入门
      • TypeScript 最佳实践
    • 杂谈(9)
      • Cloudflare 全栈部署指南
      • Creem 支付集成指南
      • Dokploy 自托管部署指南
      • GitHub OAuth 登录集成指南
      • Google OAuth 登录集成指南
      • Stripe 支付集成指南
      • Supabase 完全指南
      • Vercel 自动化部署指南
      • Zeabur 部署指南

    TailwindCSS基础介绍

    2025年12月2日 · 12 min
    ChatGPTClaude

    TailwindCSS 正在重新定义前端开发者编写样式的方式。这个以「原子化」著称的 CSS 框架,从 2017 年诞生至今,已经成为现代 Web 开发中最受欢迎的样式解决方案之一。2024 年底发布的 v4 版本更是带来了革命性的变化——基于 Rust 构建的全新 Oxide 引擎,让构建速度提升了 10 倍以上。

    什么是 TailwindCSS

    TailwindCSS 是一个「功能类优先」(Utility-First) 的 CSS 框架。与 Bootstrap、Ant Design 这类提供预制组件的框架不同,Tailwind 提供的是大量低层级的工具类(Utility Classes),让开发者直接在 HTML 中组合这些类名来构建界面。

    看一个对比例子。传统方式实现一个按钮:

    styles.css
    .btn-primary {
    background-color: #3b82f6;
    color: white;
    padding: 0.5rem 1rem;
    border-radius: 0.375rem;
    font-weight: 500;
    transition: background-color 0.2s;
    }
    .btn-primary:hover {
    background-color: #2563eb;
    }
    <button class="btn-primary">提交</button>

    而使用 TailwindCSS:

    <button
    class="bg-blue-500 text-white px-4 py-2 rounded-md font-medium hover:bg-blue-600 transition-colors"
    >
    提交
    </button>

    乍看之下,Tailwind 的写法似乎更「冗长」。但当项目规模增长后,你会发现这种方式带来的好处远超预期。

    为什么选择 TailwindCSS

    1. 告别命名焦虑

    写 CSS 最让人头疼的问题之一就是「起名字」。这个按钮叫 .btn-primary 还是 .button-main?这个卡片容器叫 .card-wrapper 还是 .card-container?团队成员各有各的命名习惯,代码库越大,命名冲突和理解成本就越高。

    TailwindCSS 完全消除了这个问题。bg-blue-500 就是蓝色背景,mt-4 就是上边距 1rem,语义直接明了,不存在歧义。

    2. 样式与结构共存

    传统开发模式中,修改一个组件需要在 HTML 和 CSS 文件之间反复跳转。而 Tailwind 把样式写在元素上,修改时一目了然。配合现代编辑器的智能提示,开发效率大幅提升。

    // 所见即所得,无需在多个文件间切换
    function Card({ title, children }) {
    return (
    <div className="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow">
    <h3 className="text-xl font-bold text-gray-900 mb-4">{title}</h3>
    <div className="text-gray-600">{children}</div>
    </div>
    )
    }

    3. 天然的设计约束

    Tailwind 内置了一套经过精心设计的设计系统。间距使用 4px 为基准的倍数(p-1 = 4px, p-2 = 8px…),颜色提供了从 50 到 950 的完整色阶,字体大小、行高、阴影等都有预设的合理值。

    这意味着即使没有设计师参与,开发者也能产出视觉上协调一致的界面。团队不再需要争论「这里用 13px 还是 14px」,直接选择 text-sm 或 text-base 即可。

    4. 生产环境的极致优化

    TailwindCSS 只会打包你实际使用的样式。无论项目大小,最终的 CSS 文件通常只有 10-20KB(gzip 后)。对比 Bootstrap 完整版接近 200KB 的体积,这是质的飞跃。

    v4 版本引入的 Oxide 引擎更是将构建速度提升到了新高度:

    指标v3v4 (Oxide)
    全量构建~200ms~20ms
    增量构建~30ms~3ms
    内存占用~150MB~20MB

    TailwindCSS 的核心理念

    原子化 CSS (Atomic CSS)

    TailwindCSS 属于原子化 CSS 范式。每个工具类只做一件事:

    .flex {
    display: flex;
    }
    .items-center {
    align-items: center;
    }
    .justify-between {
    justify-content: space-between;
    }
    .p-4 {
    padding: 1rem;
    }
    .text-lg {
    font-size: 1.125rem;
    line-height: 1.75rem;
    }

    当你写 className="flex items-center justify-between p-4" 时,实际上是在组合这些原子样式。这种模式带来了极高的样式复用率——整个项目可能只需要几百个工具类,就能组合出无数种视觉效果。

    响应式优先 (Mobile-First)

    Tailwind 采用移动优先的响应式策略。无前缀的样式应用于所有屏幕尺寸,带断点前缀的样式则在指定尺寸及以上生效:

    <div class="w-full md:w-1/2 lg:w-1/3">
    <!-- 默认占满宽度,中等屏幕占一半,大屏幕占三分之一 -->
    </div>

    v4 提供的默认断点:

    断点最小宽度CSS 媒体查询
    sm640px@media (min-width: 640px)
    md768px@media (min-width: 768px)
    lg1024px@media (min-width: 1024px)
    xl1280px@media (min-width: 1280px)
    2xl1536px@media (min-width: 1536px)

    状态变体 (State Variants)

    Tailwind 通过前缀来处理各种交互状态,无需编写额外的 CSS:

    <button
    class="
    bg-blue-500
    hover:bg-blue-600
    focus:ring-2
    focus:ring-blue-300
    active:bg-blue-700
    disabled:opacity-50
    disabled:cursor-not-allowed
    "
    >
    交互按钮
    </button>

    常用的状态变体包括:

    • hover/focus/active: 交互状态
    • disabled: 禁用状态
    • group-hover/peer-focus: 关联元素状态
    • first/last/odd/even: 位置状态
    • dark: 暗色模式

    与其他 CSS 方案的对比

    vs Bootstrap

    维度BootstrapTailwindCSS
    理念组件优先功能类优先
    学习曲线较低,记住组件名即可较高,需熟悉工具类
    定制性需覆盖预设样式天然可定制
    产物体积较大(~200KB)极小(~10KB)
    设计一致性容易千篇一律高度个性化

    Bootstrap 适合快速搭建后台管理系统、原型验证等场景。如果你追求独特的品牌视觉,Tailwind 是更好的选择。

    vs CSS-in-JS (styled-components / Emotion)

    维度CSS-in-JSTailwindCSS
    运行时开销有(样式计算)无
    动态样式原生支持需借助 CSS 变量
    类型安全天然支持需配合工具
    调试体验生成类名难读类名即样式
    学习成本需理解 JS+CSS 融合纯 CSS 思维

    CSS-in-JS 在需要高度动态样式的场景(如主题切换、动画)有优势,但 Tailwind v4 通过 CSS 变量已经覆盖了大部分场景。

    vs CSS Modules

    维度CSS ModulesTailwindCSS
    样式隔离自动 hash 类名全局类名
    代码组织独立 CSS 文件内联于 HTML
    复用方式组件级复用工具类组合
    维护成本需维护 CSS 文件几乎无独立 CSS

    CSS Modules 在大型项目中仍有一席之地,特别是当团队有成熟的 CSS 规范时。两者也可以结合使用。

    TailwindCSS v4 的重大变化

    v4 是 Tailwind 史上最大的版本更新,核心变化包括:

    1. Oxide 引擎

    完全用 Rust 重写的编译器,带来了数量级的性能提升。这使得开发时的 HMR(热模块替换)几乎感知不到延迟。

    2. CSS 优先配置

    v3 及之前版本依赖 tailwind.config.js 进行配置,v4 转向 CSS 优先的配置方式:

    /* v4: 直接在 CSS 中配置 */
    @import 'tailwindcss';
    @theme {
    --color-brand: oklch(0.7 0.15 200);
    --font-display: 'Cal Sans', sans-serif;
    --breakpoint-3xl: 1920px;
    }

    这种方式更符合 CSS 的原生特性,也让配置更加直观。

    3. 原生 CSS 变量

    v4 全面拥抱 CSS 变量,所有的颜色、间距、字体等设计令牌都以变量形式存在:

    /* 编译后的样式类似这样 */
    .bg-blue-500 {
    background-color: var(--color-blue-500);
    }

    这意味着你可以在运行时动态修改主题,无需重新构建。

    4. oklch 色彩空间

    v4 默认使用 oklch 色彩空间,这是一个感知均匀的色彩模型,能产生更自然、更和谐的颜色过渡:

    /* oklch(亮度 色度 色相) */
    --color-blue-500: oklch(0.623 0.214 259);

    5. 简化的变体语法

    一些变体写法更加直观:

    <!-- v3 -->
    <div class="group-hover:opacity-100">
    <!-- v4: 支持更多嵌套变体 -->
    <div class="group-hover:peer-focus:opacity-100"></div>
    </div>

    工具类速查

    以下是最常用的工具类分类:

    布局

    flex, grid, block, inline, hidden
    flex-col, flex-row, flex-wrap
    items-center, justify-center, justify-between
    gap-4, gap-x-2, gap-y-6

    尺寸

    w-full, w-1/2, w-screen, w-[200px]
    h-auto, h-full, h-screen, h-[50vh]
    min-w-0, max-w-xl, min-h-screen

    间距

    p-4, px-6, py-2, pt-8, pr-4, pb-6, pl-2
    m-4, mx-auto, my-8, -mt-4
    space-x-4, space-y-2

    颜色

    text-gray-900, text-blue-500
    bg-white, bg-gray-100, bg-gradient-to-r
    border-gray-200, border-blue-500

    排版

    text-sm, text-base, text-xl, text-4xl
    font-normal, font-medium, font-bold
    leading-tight, leading-relaxed
    tracking-wide, tracking-tight

    边框与圆角

    border, border-2, border-t, border-b
    rounded, rounded-lg, rounded-full
    shadow, shadow-lg, shadow-xl

    交互

    cursor-pointer, cursor-not-allowed
    hover:, focus:, active:, disabled:
    transition, duration-300, ease-in-out

    真实项目中的应用

    看一个实际的 React 组件示例:

    interface ProductCardProps {
    name: string
    price: number
    image: string
    rating: number
    onAddToCart: () => void
    }
    function ProductCard({
    name,
    price,
    image,
    rating,
    onAddToCart,
    }: ProductCardProps) {
    return (
    <div className="group relative bg-white rounded-2xl shadow-sm hover:shadow-xl transition-all duration-300 overflow-hidden">
    {/* 图片区域 */}
    <div className="aspect-square overflow-hidden">
    <img
    src={image}
    alt={name}
    className="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500"
    />
    </div>
    {/* 内容区域 */}
    <div className="p-5 space-y-3">
    <h3 className="text-lg font-semibold text-gray-900 line-clamp-1">
    {name}
    </h3>
    {/* 评分 */}
    <div className="flex items-center gap-1">
    {[...Array(5)].map((_, i) => (
    <span
    key={i}
    className={`text-sm ${i < rating ? 'text-yellow-400' : 'text-gray-200'}`}
    >
    ★
    </span>
    ))}
    <span className="text-sm text-gray-500 ml-1">({rating}.0)</span>
    </div>
    {/* 价格和按钮 */}
    <div className="flex items-center justify-between pt-2">
    <span className="text-2xl font-bold text-gray-900">
    ¥{price.toLocaleString()}
    </span>
    <button
    onClick={onAddToCart}
    className="px-4 py-2 bg-blue-500 text-white text-sm font-medium rounded-lg hover:bg-blue-600 active:bg-blue-700 transition-colors"
    >
    加入购物车
    </button>
    </div>
    </div>
    {/* 悬浮标签 */}
    <div className="absolute top-3 left-3 px-2 py-1 bg-red-500 text-white text-xs font-medium rounded">
    热销
    </div>
    </div>
    )
    }

    这个商品卡片组件展示了 Tailwind 在真实场景中的应用:

    • 布局: flex, items-center, justify-between, space-y-3
    • 响应式图片: aspect-square, object-cover
    • 交互动效: group-hover:scale-105, transition-transform
    • 状态处理: hover:bg-blue-600, active:bg-blue-700
    • 定位: absolute, top-3, left-3

    常见误区与澄清

    误区 1:「类名太长了,代码可读性差」

    实际上,当你熟悉 Tailwind 的命名规则后,扫一眼类名就能还原出视觉效果。配合 Prettier 插件自动排序类名、编辑器折叠长行等工具,可读性完全不是问题。

    误区 2:「每个元素都要写一堆类,太重复了」

    对于确实需要复用的样式组合,可以提取为组件。React/Vue 的组件化本身就解决了复用问题。少数场景可以使用 @apply(v4 中需在 @layer 内使用)。

    误区 3:「没有预制组件,从零开始太慢」

    Tailwind 有官方的 UI 库 Tailwind UI(付费),以及大量开源组件库如 shadcn/ui、daisyUI、Headless UI 等。

    误区 4:「产物会很大,包含所有工具类」

    Tailwind 的内容检测机制只会打包你使用的类。未使用的工具类根本不会出现在产物中。

    适用场景

    TailwindCSS 适合:

    • 追求高定制化的产品界面
    • 组件化开发的现代前端项目 (React/Vue/Svelte 等)
    • 注重性能和加载速度的应用
    • 有设计系统但需要灵活实现的团队

    TailwindCSS 可能不适合:

    • 需要大量动态样式计算的应用(考虑 CSS-in-JS 配合)
    • 团队对传统 CSS 有强依赖且不愿改变
    • 极简项目,只需少量样式

    下一篇文章,我们将详细介绍如何在 Next.js 项目中安装和配置 TailwindCSS v4,包括 PostCSS 配置、编辑器插件、开发工具链等完整的环境搭建流程。

    返回 BlogTailwindCSS
    上一篇通过 React Native CLI 搭建环境下一篇环境搭建与配置
    Skip toc
    • 什么是 TailwindCSS
    • 为什么选择 TailwindCSS
      • 1. 告别命名焦虑
      • 2. 样式与结构共存
      • 3. 天然的设计约束
      • 4. 生产环境的极致优化
    • TailwindCSS 的核心理念
      • 原子化 CSS (Atomic CSS)
      • 响应式优先 (Mobile-First)
      • 状态变体 (State Variants)
    • 与其他 CSS 方案的对比
      • vs Bootstrap
      • vs CSS-in-JS (styled-components / Emotion)
      • vs CSS Modules
    • TailwindCSS v4 的重大变化
      • 1. Oxide 引擎
      • 2. CSS 优先配置
      • 3. 原生 CSS 变量
      • 4. oklch 色彩空间
      • 5. 简化的变体语法
    • 工具类速查
      • 布局
      • 尺寸
      • 间距
      • 颜色
      • 排版
      • 边框与圆角
      • 交互
    • 真实项目中的应用
    • 常见误区与澄清
    • 适用场景
    Table of Contents
    • 什么是 TailwindCSS
    • 为什么选择 TailwindCSS
      • 1. 告别命名焦虑
      • 2. 样式与结构共存
      • 3. 天然的设计约束
      • 4. 生产环境的极致优化
    • TailwindCSS 的核心理念
      • 原子化 CSS (Atomic CSS)
      • 响应式优先 (Mobile-First)
      • 状态变体 (State Variants)
    • 与其他 CSS 方案的对比
      • vs Bootstrap
      • vs CSS-in-JS (styled-components / Emotion)
      • vs CSS Modules
    • TailwindCSS v4 的重大变化
      • 1. Oxide 引擎
      • 2. CSS 优先配置
      • 3. 原生 CSS 变量
      • 4. oklch 色彩空间
      • 5. 简化的变体语法
    • 工具类速查
      • 布局
      • 尺寸
      • 间距
      • 颜色
      • 排版
      • 边框与圆角
      • 交互
    • 真实项目中的应用
    • 常见误区与澄清
    • 适用场景
    > share on twitter