简述
前段时间学习了Taro, 并和公司小伙伴开发了一个支付宝小程序项目,也算获得了一些使用经验,总体来说Taro挺适合从事react开发的前端人员快速入手(基本一两天就能快速入手,入门学习成本低),非常灵活的一个框架,开发效率较高
首先是根据Taro初始化脚手架生成项目模版,然后自己配置了dva等react状态管理相关库插件,开发模式与平时react+dva+umi项目差不多,目录结构也较相似
config // taro 配置目录
dist // 打包编译后的目录
src
|-- assets // 静态资源
|-- components // 公共组件目录
|-- config // 公共配置
|-- models // 全局 models,页面 model 需要在这里引入配置
|-- services // 公共 api 存放
|-- pages // 容器组件
|-- main // 业务容器 不可以有任何大写字母
|-- components // 业务组件
|-- models // 业务model
|-- services // 业务 api
|-- index.js // 业务入口 入口文件只识别index.js 后缀必须是js
|-- MainPage.js // 业务实际页面逻辑入口
|-- MainPage.less // 样式
|-- MapProps.js // mapStateToProps、mapDispatchToProps
|-- utils // 工具
|-- app.jsx // 全局入口
|-- app.less // 全局样式
|-- index.html // h5 编译需要的 HTML
.eslintrc.js // eslint配置
.gitignore
package.json
README.md
说到优点,肯定要说的是多端开发,一次编码,多端使用,目前 Taro 3 可以支持转换到 微信/京东/百度/支付宝/字节跳动/QQ 小程序 以及 H5 端
说到缺点,开发简单页面倒还行,但再处理一些与原生相关内容或Taro Api(如上传视频、音频功能),存在很大的兼容性, 各个移动端之间很多api达不到都统一支持,需要相应移动端原生开发人员或小程序内部人员协调协助,这点常在技术社区受人诟病,这也是很多移动端产品技术选型时直接放弃Taro的原因
部分截图
安装
首先确保node 环境(>=8.0.0),安装CLI工具
# 使用 yarn 安装 CLI
$ yarn global add @tarojs/cli
# 使用 cnpm 安装 CLI
$ cnpm install -g @tarojs/cli
项目初始化
使用命令创建模板项目或者直接用我给你的taro-demo项目
$ taro init 项目名
创建完项目,Taro 会默认开始安装项目所需要的依赖,如果安装失败,可以在项目目录下自己使用安装命令进行安装
$ yarn or cnpm install
保持 @tarojs/cli 的版本与项目依赖的taro版本一致,不然要出问题导致编译失败
在各端运行及打包
Taro 需要运行不同的命令,将 Taro 代码编译成不同端的代码,然后在对应的开发工具中查看效果,现支持H5、RN、支付宝小程序、微信小程序等其他小程序,现举例其中几个
微信小程序模式运行,需要自行下载并打开微信开发者工具,然后在项目编译完后(如下)选择项目根目录进行预览及打包
# yarn
$ yarn dev:weapp
$ yarn build:weapp
# 仅限全局安装
$ taro build --type weapp --watch
$ taro build --type weapp
支付宝小程序模式运行,需要自行下载并打开支付宝小程序开发者工具,然后在项目编译完后(如下)选择项目根目录下 dist 目录进行预览及打包
# yarn
$ yarn dev:alipay
$ yarn build:alipay
# 仅限全局安装
$ taro build --type alipay --watch
$ taro build --type alipay
H5 模式运行,无需特定的开发者工具,在执行完下述命令之后即可自动通过浏览器进行预览及打包
# yarn
$ yarn dev:h5
$ yarn build:h5
# 仅限全局安装
$ taro build --type h5 --watch
$ taro build --type h5
更新
更新 Taro CLI 工具 和项目中 Taro 相关的依赖 假设目前2.0.5为最新版本,如
# 更新 Taro CLI 工具
$ yarn global upgrade @tarojs/cli@2.0.5
# 更细项目中 Taro 相关的依赖
$ taro update project 2.0.5
一些命令
- Taro版本环境及依赖检测
$ taro info - 诊断项目的依赖、设置、结构,代码规范问题
$ Taro Doctor - 其他命令请参考
$ taro --help
Taro开发问题FAQ
- Taro语法书写规范与我们平时接触到的react语法几乎类似,包括组件化思想,组件生命周期,JSX,Hooks等
- 初始化选项为redux的Taro的项目文件架构也与dva+umi相似,入口文件默认是
src目录下的app.js - Taro 默认会对所有单位进行转换,所以不用移动端担心像素单位适配问题,尺寸单位建议使用
px、 百分比% - 组件和引用组件的页面css选择器不能用id 选择器(#a)、属性选择器([a])、标签名选择器、子代选择器(.a .b),最好统一改成改用 class 选择器
- 路由、缓存的api多看看,比较区别
- Taro提供有自己的组件库,也有基于Taro开发的更丰富的Taro-ui库,一般建议能用taro的Api做的功能,优先用taro的Api,Taro-ui库功能兼容性偏低, 如loading
- 在Taro里可以像
webpack引用静态资源,不需要安装Loaders,直接通过 ES6 的import语法来引用文件,文件建议放在静态服务器上,已减轻包体积 - Taro提供的api很丰富,如缓存、路由、拍照、视频,只不过兼容性问题很大,各个移动端之间很多api达不到都统一支持,不过这不能怪Taro,微信小程序的支持最友好,如果你会开发微信小程序,那么这些api你会非常熟悉
- Taro也可以支持与原生小程序混写,并且可以使用原生第三方组件或插件
基于Taro+Taro-ui+dva的taro项目
目前看到Taro已经更新到3.x了,嘤嘤嘤嘤~, 技术这条路,看来只能是不进则退了,加油共勉~~~