👽 Taro['tɑ:roʊ],泰罗·奥特曼,宇宙警备队总教官,实力最强的奥特曼。
Taro 是一套遵循 React 语法规范的 多端开发 解决方案。现如今市面上端的形态多种多样,Web、React-Native、微信小程序等各种端大行其道,当业务要求同时在不同的端都要求有所表现的时候,针对不同的端去编写多套代码的成本显然非常高,这时候只编写一套代码就能够适配到多端的能力就显得极为需要。
使用 Taro,我们可以只书写一套代码,再通过 Taro 的编译工具,将源代码分别编译出可以在不同端(微信/百度/支付宝小程序、H5、React-Native 等)运行的代码。
Taro 已经投入了我们的生产环境中使用,业界也在广泛地使用 Taro 开发多端应用。
- Taro Redux 示例 taro-redux-sample
- TodoMVC (小程序/H5/React Native)
- Taro 组件库示例 taro-components-sample
- Taro 端能力示例 taro-apis-sample
- Taro 实验性特性项目 taro-todo
- 仿知乎小程序
- Taro整合Dva示例
- V2ex小程序(TypeScript)
- 与微信小程序原生融合的示例
- 💯基于Taro + Dva构建的时装衣橱(电商实战项目)
- 从0到1构建适配不同端(微信小程序、H5、React-Native 等)的taro + dva应用
- 【小程序taro最佳实践】http请求封装(方便使用,增加token,统一错误日志记录和上报)
- 【小程序taro 最佳实践】异步action优雅实践(简化流程)
- 使用Taro框架开发小程序
- Taro下利用Decorator快速实现小程序分享
- 微信小程序授权登陆方案以及在Taro下利用Decorator修饰器实现
- 试用React语法的多端框架Taro问题汇总
- Taro 在京东购物小程序上的实践
- Taro实践 - TOPLIFE小程序 开发体验
- Taro 技术揭秘:taro-cli
- 为何我们要用 React 来写小程序 - Taro 诞生记
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 进行状态管理。
✅ 小程序 API 优化,异步 API Promise 化等等。
Taro 方案的初心就是为了打造一个多端开发的解决方案。目前 Taro 代码可以支持转换到 微信/百度/支付宝小程序 、 H5 端 以及 移动端(React-Native)。
安装 Taro 开发工具 @tarojs/cli
使用 npm 或者 yarn 全局安装,或者直接使用 npx
$ npm install -g @tarojs/cli
$ yarn global add @tarojs/cli
使用命令创建模板项目
$ taro init myApp
npm5.2+ 也可在不全局安装的情况下使用 npx 创建模板项目
$ npx @tarojs/cli init myApp
进入项目目录开始开发,目前已经支持 微信/百度/支付宝小程序、H5 以及 ReactNative 等端的代码转换,针对不同端的启动以及预览、打包方式并不一致
选择微信小程序模式,需要自行下载并打开微信开发者工具,然后选择项目根目录进行预览。
微信小程序编译预览及打包(去掉 --watch 经不会监听文件修改,并会对代码进行压缩打包)
# npm script
$ npm run dev:weapp
$ npm run build:weapp
# 仅限全局安装
$ taro build --type weapp --watch
$ taro build --type weapp
# npx 用户也可以使用
$ npx taro build --type weapp --watch
$ npx taro build --type weapp
选择百度小程序模式,需要自行下载并打开百度开发者工具,然后在项目编译完后选择项目根目录下 dist
目录进行预览。
百度小程序编译预览及打包(去掉 --watch 经不会监听文件修改,并会对代码进行压缩打包)
# npm script
$ npm run dev:swan
$ npm run build:swan
# 仅限全局安装
$ taro build --type swan --watch
$ taro build --type swan
# npx 用户也可以使用
$ npx taro build --type swan --watch
$ npx taro build --type swan
选择支付宝小程序模式,需要自行下载并打开支付宝小程序开发者工具,然后在项目编译完后选择项目根目录下 dist
目录进行预览。
支付宝小程序编译预览及打包(去掉 --watch 经不会监听文件修改,并会对代码进行压缩打包)
# npm script
$ npm run dev:alipay
$ npm run build:alipay
# 仅限全局安装
$ taro build --type alipay --watch
$ taro build --type alipay
# npx 用户也可以使用
$ npx taro build --type alipay --watch
$ npx taro build --type alipay
H5 模式,无需特定的开发者工具,在执行完下述命令之后即可通过浏览器进行预览
H5 预览项目
# npm script
$ npm run dev:h5
# 仅限全局安装
$ taro build --type h5 --watch
# npx 用户也可以使用
$ npx taro build --type h5 --watch
H5 打包项目
# npm script
$ npm run build:h5
# 仅限全局安装
$ taro build --type h5
# npx 用户也可以使用
$ npx taro build --type h5
React Native 端运行需执行如下命令,React Native 端相关的运行说明请参见 React Native 教程
# npm script
$ npm run dev:rn
# 仅限全局安装
$ taro build --type rn --watch
# npx 用户也可以使用
$ npx taro build --type rn --watch
本项目遵从 Angular Style Commit Message Conventions,更新日志由 conventional-changelog
自动生成。完整日志请点击 CHANGELOG.md。
MIT License
Copyright (c) 2018 O2Team
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.