▶_MiniApp Toolkit

Taro

框架活跃维护

京东凹凸实验室开源的多端统一开发框架。支持 React/Vue 语法,一次编译可运行到微信/支付宝/百度/字节/华为/快应用等多端。提供完整的 CLI 工具链、丰富的插件生态。

37,582🕒 最近更新 2026-04
前端框架小程序UI框架

特性

  • React/Vue双语法
  • 多端编译(微信/支付宝/百度/抖音/H5/RN)
  • 插件化架构
  • TypeScript支持
  • CSS Modules/Tailwind
  • CLI脚手架
  • 社区活跃(42k+ stars)

详细文档

Taro#

👽 Taro['tɑ:roʊ],泰罗·奥特曼,宇宙警备队总教官,实力最强的奥特曼。

简介#

Taro 是一套遵循 React 语法规范的 多端开发 解决方案。现如今市面上端的形态多种多样,Web、React-Native、微信小程序等各种端大行其道,当业务同时在不同的端都要求有所表现的时候,针对不同的端编写多套代码的成本显然非常高,这时只编写一套代码就能适配到多端的能力就显得极为重要。

使用 Taro,我们只需书写一套代码,再通过 Taro 的编译工具,即可将源代码分别编译出在不同端(微信/百度/支付宝/字节跳动小程序、快应用、H5、React-Native 等)运行的代码。

学习资源#

awesome-taro

掘金小册:Taro 多端开发实现原理与实战

加入社区共建#

Taro 邀你加入社区共建

社区共享#

Taro 交流社区——让每一次交流都被沉淀

Taro 物料市场——让每一个轮子产生价值

使用案例#

Taro 已经投入了我们的生产环境中使用,业界也在广泛地使用 Taro 开发多端应用。

Taro 特性#

React 语法风格

Taro 的语法规则基于 React 规范,它采用与 React 一致的组件化思想,组件生命周期与 React 保持一致,同时在书写体验上也尽量与 React 类似,支持使用 JSX 语法,让代码具有更丰富的表现力。

代码示例

code
import Taro, { Component } from '@tarojs/taro'
import { View, Button } from '@tarojs/components'

export default class Index extends Component {
  constructor () {
    super(...arguments)
    this.state = {
      title: '首页',
      list: [1, 2, 3]
    }
  }

  componentWillMount () {}

  componentDidMount () {}

  componentWillUpdate (nextProps, nextState) {}

  componentDidUpdate (prevProps, prevState) {}

  shouldComponentUpdate (nextProps, nextState) {
    return true
  }

  add = (e) => {
    // dosth
  }

  render () {
    return (
      <View className='index'>
        <View className='title'>{this.state.title}</View>
        <View className='content'>
          {this.state.list.map(item => {
            return (
              <View className='item'>{item}</View>
            )
          })}
          <Button className='add' onClick={this.add}>添加</Button>
        </View>
      </View>
    )
  }
}

快速开发微信小程序

Taro 立足于微信小程序开发,众所周知小程序的开发体验并不是非常友好,比如小程序中无法使用 npm 来进行第三方库的管理,无法使用一些比较新的 ES 规范等等,针对小程序端的开发弊端,Taro 具有以下的优秀特性:

✅ 支持使用 npm/yarn 安装管理第三方依赖。

✅ 支持使用 ES7/ES8 甚至更加新的 ES 规范,一切都可自行配置。

✅ 支持使用 CSS 预编译器,例如 Sass 等。

✅ 支持使用 Redux 进行状态管理。

✅ 支持使用 Mobx 进行状态管理。

✅ 小程序 API 优化,异步 API Promise 化等等。

支持多端开发转化

Taro 方案的初心就是为了打造一个多端开发的解决方案。目前 Taro 代码可以支持转换到 微信/百度/支付宝/字节跳动小程序快应用H5 端 以及 移动端(React-Native)

更多功能#

如果你还想 Taro 支持新的特性,请使用 FeatHub 进行投票,我们将综合考虑投票结果等因素来确定开发的优先级。

Feature Requests

Feature Requests

Let's fund issues in this repository

实战开发指南#

快速创建项目#

code
# 安装 CLI
npm install -g @tarojs/cli

# 创建项目(React 语法)
taro init my-app

# 创建项目(Vue3 语法)
taro init my-app --template vue3

编译到各端#

code
# 微信小程序
taro build --type weapp

# 支付宝小程序
taro build --type alipay

# 抖音小程序
taro build --type tt

# H5
taro build --type h5

# React Native
taro build --type rn

常见问题与解决方案#

  1. 微信小程序 setData 性能:Taro 在编译时会自动优化 setData,但仍需避免大对象更新。使用 useState 时拆分细粒度状态,避免整个页面的 state 合并更新。

  2. 跨端样式差异:不同端的默认样式不同,建议使用 process.env.TARO_ENV 进行条件编译:

code
// 条件编译
{process.env.TARO_ENV === weapp && <View>仅微信显示</View>}
  1. 第三方 UI 库集成

    • Vant Weapp:通过 taro-plugin-html 使用,或直接使用 NutUI-Taro(京东官方适配版)
    • NutUI:npm install @nutui/nutui-taro 直接支持 Taro
    • TDesign:提供 @tarojs/plugin-platform-mini-ci 插件
  2. 分包加载:Taro 支持小程序原生分包,在 app.config.ts 中配置:

code
subPackages: [
  { root: pages/sub, pages: [index] }
]
  1. API 差异处理:Taro 提供 Taro.xxx() 统一 API,底层自动适配各端。对于各端独有 API,用 process.env.TARO_ENV 条件分支。