Taro-UI logo

Taro-UI

基于 Taro 框架开发的多端 UI 组件库,一套代码适配微信小程序、支付宝小程序、百度小程序、H5 等多个平台

移动端小程序跨端UI组件库

Taro-UI 是京东凹凸实验室开源的多端 UI 组件库,是 Taro 生态中首个官方维护的跨端 UI 解决方案。提供约 50 个涵盖基础、视图、导航、表单等分类的组件,覆盖移动端常见场景。

Taro-UI

基于 Taro 框架开发的多端 UI 组件库,一套代码适配微信小程序、支付宝小程序、百度小程序、H5 等多个平台。

技术简介说明

Taro-UI 是由京东凹凸实验室(Aotu Lab / NervJS)于 2018 年 8 月正式开源发布的多端 UI 组件库,也是 Taro 生态中首个官方维护的跨端 UI 解决方案。它从诞生之初就定位为 Taro 框架的"标配组件库",借助 Taro 编译工具的跨端能力,实现了一套组件源码在微信小程序、H5、百度小程序、支付宝小程序等多端适配运行的目标。

Taro-UI 的核心价值在于将"多端一致性"从开发框架层延伸到了 UI 组件层。在跨端开发场景中,开发者不仅需要框架层面的编译适配,还需要一套视觉统一、行为一致的 UI 组件来确保产品在各终端上呈现一致的用户体验。Taro-UI 提供了约 50 个涵盖基础、视图、导航、表单、操作反馈、布局等分类的组件,覆盖了移动端应用的常见场景需求。

项目经历了从活跃维护到长期停滞、再到 2026 年恢复维护的曲折历程。在 2022-2025 年间,社区曾普遍质疑项目已被放弃(GitHub Issue #1486 引发广泛讨论)。2026 年 5 月,Taro-UI 发布 v3.3.2 恢复维护版本,启动了工具链升级、构建系统重构、Monorepo 改造以及 Taro v4 兼容性适配等工作,项目重新进入活跃开发状态。

基本信息

属性信息
官网https://taro-ui.jd.com/
H5 预览https://taro-ui.jd.com/h5/index.html
GitHubhttps://github.com/NervJS/taro-ui(原仓库)/ https://github.com/jd-opensource/taro-ui(京东开源)
LicenseMIT
最新版本v3.3.3(2026-05-25)
主要维护者京东凹凸实验室(NervJS / jd-opensource)
GitHub Stars4.7k+
总提交数2,085+
Fork 数740+
包体积按需引入,单组件约 5-30KB
NPM 周下载量约 2,000-5,000(恢复维护后增长中)

快速上手

安装

# 确保已安装 Taro CLI
npm install -g @tarojs/cli
 
# 安装 Taro UI(Taro 3.x 项目)
npm install taro-ui
 
# 或使用 Taro 3 的 next 标签(最新稳定版)
npm install taro-ui@next

基础配置

1. 引入全局样式(推荐)

// 在 app.scss 中引入全量样式
@import '~taro-ui/dist/style/index.scss';

2. 按需引入样式

// 仅引入所需组件的样式(需配合 babel 插件)
@import '~taro-ui/dist/style/components/button.scss';
@import '~taro-ui/dist/style/components/icon.scss';

3. 自定义主题(Taro UI 2.0+ 支持)

// 在 app.scss 中覆盖 SCSS 变量
$color-brand: #6190e8;
$color-brand-light: #78a4f4;
$color-brand-dark: #346fc2;
 
@import '~taro-ui/dist/style/index.scss';

最小示例

import { View } from '@tarojs/components'
import { AtButton, AtIcon } from 'taro-ui'
import './index.scss'
 
export default function Index() {
  return (
    <View className='index'>
      <AtIcon prefixClass='at-icon' value='heart' size='30' color='#6190e8' />
      <AtButton type='primary' circle>
        Taro UI 按钮
      </AtButton>
    </View>
  )
}

核心概念与架构

Taro-UI 采用 "框架编译 + 组件库"双层架构,整体依赖关系如下:

开发者代码
    ↓
Taro-UI 组件(React/Vue 封装)
    ↓
Taro 编译工具链
    ↓
┌────────────────┬────────────────┬────────────┬──────────┐
│ 微信小程序      │ 支付宝小程序    │ 百度小程序  │   H5     │
│ (WXML + WXSS)  │ (AXML + ACSS)  │ (Swan)     │ (React)  │
└────────────────┴────────────────┴────────────┴──────────┘

核心设计理念:

  1. Taro 编译时适配:Taro-UI 组件本身不直接处理多端差异,而是依赖 Taro 框架的编译工具将同一套 JSX/TSX 代码编译为各端原生代码。组件只需要关注 UI 逻辑和样式在不同端的兼容性。

  2. SCSS 样式体系:所有样式基于 SCSS 编写,通过变量系统实现主题定制能力。各端的样式差异通过 Taro 的条件编译和平台特有样式文件来处理。

  3. 按需加载机制:支持组件和样式的按需引入,结合 babel-plugin-import 或手动路径引入,有效控制最终产物体积。

  4. Monorepo 重构(2026 路线):当前正在进行 Monorepo 架构改造,将组件拆分为独立子包,支持独立版本管理和按需引入。

核心特性

1. 多端适配

一套组件代码同时运行于微信小程序、支付宝小程序、百度小程序和 H5,借助 Taro 编译能力自动适配各端差异,极大降低多端开发成本。

2. 丰富的组件体系

提供约 50 个组件,覆盖基础(Button、Icon、Color)、视图(Tag、Badge、Avatar、NoticeBar)、导航(NavBar、Tabs、TabBar)、表单(Input、Radio、Checkbox、Picker)、操作反馈(Modal、Toast、ActionSheet)和布局(List、Card、Grid)六大分类。

3. 自定义主题

从 2.0 版本开始支持 SCSS 变量覆盖方式实现主题定制,可灵活调整品牌色、圆角、字号等设计参数,满足不同业务品牌的视觉风格需求。

4. 按需引入

支持组件级和样式级的按需加载,配合工具链实现最小化产物体积,避免全量引入导致的包体膨胀。

5. TypeScript 支持

全面提供类型定义文件(.d.ts),在 VS Code 等编辑器中可获得完整的 API 提示和类型检查能力。

6. 友好的 API 设计

组件 API 遵循 React 社区的主流约定,属性命名直观,支持受控/非受控模式,文档提供丰富的使用示例。

7. Taro 生态深度集成

作为 Taro 官方 UI 库,与 Taro 框架的版本迭代保持同步,第一时间适配新特性和平台变化。

8. Vue3 社区版本

除 React 版本外,社区维护了基于 Vue3 重写的 taro-ui-vue3 版本(https://github.com/b2nil/taro-ui-vue3),为 Vue 技术栈的 Taro 开发者提供选择。

生态图

┌─────────────────────────────────────────────────────────┐
│                     Taro 生态                           │
│                                                         │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │   Taro CLI   │  │  Taro Runtime│  │  Taro Plugin │  │
│  │  (脚手架)     │  │  (运行时)     │  │  (插件系统)   │  │
│  └──────┬───────┘  └──────────────┘  └──────────────┘  │
│         │                                               │
│  ┌──────▼───────────────────────────────────────────┐   │
│  │              Taro-UI(核心组件库)                  │   │
│  │  React 版 | Vue3 社区版(taro-ui-vue3)           │   │
│  └──────┬───────────────────────────────────────────┘   │
│         │                                               │
│  ┌──────▼───────────────────────────────────────────┐   │
│  │              Taro 物料市场                         │   │
│  │  模板 · 插件 · 组件库 · 工具                       │   │
│  │  https://taro-ext.jd.com                         │   │
│  └──────────────────────────────────────────────────┘   │
│                                                         │
│  相关生态项目:                                          │
│  • NutUI — 京东电商风格组件库(Vue3 + Taro)              │
│  • OSSA — 网易严选多端组件库                              │
│  • duxui — 社区跨端 UI 库(RN 兼容)                     │
│  • taro-ui-shadcn — Shadcn 风格 Taro 组件               │
│  • awesome-taro — Taro 社区优质物料合集                   │
└─────────────────────────────────────────────────────────┘

适用场景

1. 小程序多端统一开发

需要同时发布微信小程序、支付宝小程序、百度小程序等多个平台的应用,使用 Taro-UI 可以一套代码覆盖所有平台,减少多端适配工作量。

2. H5 + 小程序混合应用

产品需要同时提供 H5 版本和小程序版本(如电商活动页、营销落地页),Taro-UI 的跨端能力天然支持这种"一码多端"场景。

3. Taro 技术栈项目

已经选择 Taro 作为跨端框架的项目,Taro-UI 作为官方组件库,在版本兼容性、问题排查和社区支持上具有最佳匹配度。

4. 中小型移动端应用

组件库覆盖了常见的 UI 场景,对于功能相对标准的中小型移动应用(如企业官网小程序、内部工具 App、简单电商应用),可以直接满足大部分 UI 需求。

5. 快速原型验证

借助 Taro + Taro-UI 的组合,开发者可以快速搭建跨端原型进行产品验证,大幅缩短从概念到可运行 Demo 的时间。

6. 统一设计规范的团队项目

通过自定义主题变量和 SCSS 设计 Token,团队可以建立统一的设计规范并在多端保持一致的视觉呈现。

7. 京东系业务或电商场景

Taro-UI 源自京东内部项目,其组件设计风格贴合电商类应用场景,同时可搭配 NutUI(京东另一款 Vue3 风格组件库)进行互补。

开发与工程化

项目结构(重构后)

taro-ui/
├── packages/              # Monorepo 子包(重构中)
│   ├── components/        # 组件源码
│   ├── styles/            # SCSS 样式
│   └── utils/             # 工具函数
├── src/                   # 组件源码(当前结构)
│   ├── components/        # 各组件目录
│   └── common/            # 公共模块
├── types/                 # TypeScript 类型定义
├── dist/                  # 构建产物
├── docs/                  # 文档
├── test/                  # 测试
└── package.json

构建与开发命令

# 克隆仓库
git clone https://github.com/NervJS/taro-ui.git
 
# 安装依赖
pnpm install
 
# 开发模式
pnpm dev
 
# 构建
pnpm build
 
# 类型检查
pnpm typecheck
 
# 代码检查
pnpm lint

2026 年路线图重点

方向说明
Monorepo 重构将项目拆分为独立子包,支持按需引入和独立版本管理
CSS 预编译改造优化样式构建流程,支持更灵活的主题方案
Taro v4 兼容验证并适配 Taro 4.x 新特性
工具链升级构建工具、测试框架的现代化升级
Bug 修复修复历史遗留的高优先级问题

性能与安全

性能优化

  • 按需加载:支持组件和样式的按需引入,避免全量加载导致的包体膨胀
  • Tree Shaking 友好:组件采用 ES Module 导出,支持现代打包工具的 Tree Shaking
  • 样式隔离:利用 Taro 框架的样式隔离机制,避免跨组件样式污染
  • 条件编译:通过 Taro 的条件编译能力,针对不同平台输出最优代码
  • 组件懒加载:支持动态 import() 进行组件级别的代码分割

安全相关

  • XSS 防护:组件基于 Taro 的 JSX 渲染机制,默认对用户输入进行转义
  • 依赖安全:建议定期通过 npm audit 检查依赖链中的已知漏洞
  • 自定义内容:对于 dangerouslySetInnerHTML 等直接注入内容的场景需谨慎使用

包体积参考

引入方式预估体积
全量引入~200KB(gzip 后)
单组件引入5-30KB/个
样式文件~100KB(全量 SCSS)

技术对比

特性Taro-UINutUIVant WeappAnt Design Mini
定位Taro 官方跨端 UI 库京东电商风格组件库有赞移动端组件库蚂蚁集团小程序组件库
技术栈React(Taro)Vue3 / React(Taro)微信小程序原生支付宝小程序原生
组件数量~50 个~80 个~70 个~60 个
多端支持微信/支付宝/百度/H5微信/H5/RN(Vue3)/ Taro微信/支付宝/H5支付宝为主
跨端能力★★★★★★★★★★★★★★
维护活跃度★★★★(2026 恢复)★★★★★★★★★★★★★★
GitHub Stars4.7k6k+26k+1k+
设计系统Taro 自研风格京东电商风格有赞设计语言Ant Design 延伸
TypeScript✅ 支持✅ 支持✅ 支持✅ 支持
自定义主题SCSS 变量SCSS + CSS 变量CSS 变量CSS 变量
按需加载✅ 支持✅ 支持✅ 支持✅ 支持
Vue3 支持社区版(taro-ui-vue3)✅ 原生支持
适用框架TaroTaro / 独立使用小程序原生支付宝小程序
LicenseMITMITMITMIT

选型建议

  • 选 Taro-UI:项目使用 Taro + React 技术栈,需要强跨端能力(微信/百度/H5 多端覆盖)
  • 选 NutUI:项目使用 Taro + Vue3 技术栈,或电商类应用需要更丰富的组件
  • 选 Vant Weapp:仅开发微信小程序,追求成熟稳定的组件库生态
  • 选 Ant Design Mini:支付宝小程序为主,或需要与 Ant Design Web 端设计一致

最佳实践

1. 样式定制规范

// 建议:在 app.scss 中统一管理主题变量
// 品牌色
$color-brand: #6190e8;
$color-brand-light: lighten($color-brand, 10%);
$color-brand-dark: darken($color-brand, 15%);
 
// 文字色
$color-text: #333333;
$color-text-secondary: #666666;
$color-text-placeholder: #999999;
 
// 背景色
$color-bg: #f5f5f5;
$color-bg-container: #ffffff;
 
@import '~taro-ui/dist/style/index.scss';

2. 按需引入配置

// babel.config.js
module.exports = {
  plugins: [
    ['import', {
      libraryName: 'taro-ui',
      customName: (name) =>
        `taro-ui/dist/components/${name.replace('at-', '')}/index`,
      customStyleName: (name) =>
        `taro-ui/dist/style/components/${name.replace('at-', '')}.scss`,
    }]
  ]
}

3. 多端差异处理

// 使用 Taro 条件编译处理平台差异
// 文件命名约定:xxx.weapp.tsx / xxx.h5.tsx
import Taro from '@tarojs/taro'
 
const platform = Taro.getEnv()
 
// 或在代码中使用平台判断
if (process.env.TARO_ENV === 'weapp') {
  // 微信小程序特定逻辑
} else if (process.env.TARO_ENV === 'h5') {
  // H5 特定逻辑
}

4. 组件封装建议

// 建议在 Taro-UI 基础上做二次封装,统一业务规范
import { AtButton } from 'taro-ui'
import { View } from '@tarojs/components'
 
interface BizButtonProps {
  type?: 'primary' | 'secondary' | 'danger'
  loading?: boolean
  children: React.ReactNode
  onClick?: () => void
}
 
export function BizButton({ type = 'primary', loading, children, onClick }: BizButtonProps) {
  return (
    <View className='biz-button-wrapper'>
      <AtButton type={type} loading={loading} onClick={onClick}>
        {children}
      </AtButton>
    </View>
  )
}

5. 测试与质量保障

# 在 Taro 项目中运行测试
# 推荐使用 Jest + @testing-library/react
pnpm test
 
# 跨端验证:分别在各端预览
pnpm dev:weapp   # 微信小程序
pnpm dev:h5      # H5
pnpm dev:alipay  # 支付宝小程序

技术局限与边界

1. React Native 支持不完整

官方 README 明确指出"ReactNative 端暂不支持",若项目需要 RN 适配,需考虑其他方案或使用社区版 duxui。

2. 历史维护断档影响

2022-2025 年间的长期停滞导致部分高优先级 Issue 未得到及时修复,升级至 3.3.x 后需要充分回归测试。

3. 组件丰富度有限

相比 NutUI(80+)、Vant Weapp(70+)等竞品,Taro-UI 的 50 个组件在复杂场景(如高级表格、虚拟滚动列表、富文本编辑器)覆盖上存在差距。

4. Vue 版本依赖社区

官方 React 版本恢复维护,但 Vue3 版本(taro-ui-vue3)仍为社区独立维护,版本同步和 bug 修复节奏不可控。

5. 跨端样式差异

不同小程序平台对 CSS 的支持存在差异(如 Flexbox 兼容性、伪元素行为),部分组件可能需要平台特定的样式 Hack。

6. 文档更新滞后

部分组件文档停留在早期版本,与最新代码行为不完全一致,需要结合实际源码确认。

7. 设计系统独立性

Taro-UI 的设计风格偏通用/京东系,缺少像 Ant Design 那样完整的设计规范和 Figma 资源体系(社区有 Figma 资源但非官方主导)。

8. 社区规模较小

相比 Vant Weapp(26k+ Stars)和 NutUI(6k+ Stars),Taro-UI 的 4.7k Stars 意味着社区贡献者和第三方生态(主题、插件、扩展组件)相对有限。

学习资源

官方资源

社区资源

学习路径建议

  1. 入门:先阅读 Taro 官方文档(https://docs.taro.zone/docs/guide),了解 Taro 框架基础
  2. 上手组件:参考 Taro UI 官方文档逐组件学习,配合 H5 预览查看效果
  3. 实战项目:克隆官方示例项目(taro-ui-demo),在本地运行并修改学习
  4. 进阶定制:学习 SCSS 变量系统和主题定制方案
  5. 跨端调试:掌握各端(小程序/H5)的调试技巧和常见问题处理

2026 年现状

项目复苏

Taro-UI 在 2026 年迎来了重要的转折点。经过 2022-2025 年间的长期停更(期间 GitHub 上大量 Issue 反映项目被放弃的担忧),京东开源团队于 2026 年 5 月发布了 v3.3.2 恢复维护版本,正式宣告项目回归活跃开发状态。紧随其后的 v3.3.3 修复了路径兼容问题,展现了快速响应的维护节奏。

当前版本状态

版本发布日期说明
v3.3.32026-05-25修复路径不兼容问题(恢复 dist/ 目录结构)
v3.3.22026-05-21恢复维护发布:工具链升级、构建重构、Bug 修复
v3.2.x历史版本最后的稳定维护版本

2026 路线图进展

当前正在推进的工作:

  • ✅ Monorepo 重构(进行中)— 将组件拆分为独立子包
  • 🔧 CSS 预编译改造 — 优化样式构建和主题方案
  • 🔗 Taro v4 兼容性验证 — 确保与最新版 Taro 框架无缝配合
  • 🐛 历史 Bug 修复 — 逐步处理积压的 Issue

生态定位

在 2026 年的 Taro 生态中,Taro-UI 仍然是 React 技术栈 + Taro 框架的首选官方 UI 库。对于 Vue3 技术栈的 Taro 项目,官方推荐使用 NutUI(京东另一款组件库)。Taro-UI 的独特优势在于其对多小程序平台的广泛覆盖能力,这在京东系的跨端业务场景中仍然是不可替代的。

风险评估

  • 积极信号:恢复维护、快速发布修复版本、明确的路线图规划
  • 需关注:Monorepo 重构完成时间、Taro v4 全面兼容进度、积压 Issue 的处理速度
  • 长期建议:对于新项目,如果选择 Taro 框架,可以关注 Taro-UI 的重构进展;如果项目周期紧张且需要更成熟的组件库,可考虑 NutUI 或 Vant Weapp 作为替代