Taro

开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5 等应用。「Open cross-end cross-framework solutions, support the use of React/Vue/Nerv and other frameworks to develop WeChat/Beijing East/Baidu/Alipay/Byte Jump/ QQ applet/H5 applications.」

Github星跟踪图

Taro





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

版本

1.x 版本文档

简介

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 语法,让代码具有更丰富的表现力。

代码示例

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

? 参与共建 PRs Welcome

请参考贡献指南.

强烈推荐阅读 《提问的智慧》《如何向开源社区提问题》《如何有效地报告 Bug》《如何向开源项目提交无法解答的问题》,更好的问题更容易获得帮助。

Let's fund issues in this repository

特别鸣谢

nanjingboy

主要指标

概览
名称与所有者NervJS/taro
主编程语言TypeScript
编程语言JavaScript (语言数: 11)
平台Linux, Mac, Windows, 微信公众平台, 智能小程序平台, 蚂蚁金服开放平台, 字节跳动小程序开发者平台
许可证Other
所有者活动
创建于2018-04-08 09:32:26
推送于2025-04-22 10:56:18
最后一次提交
发布数1028
最新版本名称v4.0.9-alpha.5 (发布于 2025-04-22 10:56:17)
第一版名称v0.0.1 (发布于 2018-04-08 21:52:13)
用户参与
星数36.4k
关注者数692
派生数4.8k
提交数14.1k
已启用问题?
问题数12062
打开的问题数1427
拉请求数3315
打开的拉请求数84
关闭的拉请求数1190
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?