Highlights
一、更快编译速度
Taro 3 React Native 对整个编译系统进行较大调整,不再生成中间代码,而是直接利用 Metro 生成 bundle
,通过运行时适配 Taro 3 标准,这种方式使得编译过程更简单,大大提升了编译速度。
二、source-map
支持
Taro 3 对编译系统改造在提升编译速度的同时,也天然支持source-map
,对于开发体验是一个巨大的提升,能够达到与开发原生 React Native 应用一致的体验。
三、多 React Native 版本支持,拥抱最新版 0.64
Taro 3 对系统架构进行了全面升级,React Native 版本取决于开发者项目中的依赖,目前支持 0.60 以上的 React Native 版本,当然最新的 0.64 也是完全支持。
在 React Native 0.64 的版本中,iOS 端完成 了对 Hermes 引擎的支持,默认启用了内联引用,也支持 React 17 等等,想体验这些新特性的开发者只需升级对应依赖即可。
新项目升级
Taro 模板默认依赖 React 17、TypeScript 4,运行 React Native 端会自动安装 0.64 的版本,直接使用即可。
旧项目升级
从 v2.x 升级的同学需要先按迁移指南进行操作。
如果是Taro 3 的旧项目,手动升级对应的依赖:
react: ^17.0.0
react-dom: ^17.0.0
typescript: ^4.1.0
@typescript-eslint/parser: ^4.15.1
@typescript-eslint/eslint-plugin: ^4.15.1
react-native:^0.64.0
设置 ESLint 配置:
// .eslintrc
module.exports = {
"extends": ["taro/react"],
"rules": {
"react/jsx-uses-react": "off",
"react/react-in-jsx-scope": "off"
}
}
四、更丰富API与组件
要真正做到一套代码,多端复用,非常重要的一点就是组件和 API 的覆盖度,在 Taro 3.2 之前,适配 React Native 已经实现了很多常用 API 和组件,但与小程序,H5 之间还存在较大的差距,需进一步完善。在新的版本中,我们进一步提升组件和 API 的覆盖度,共新增 45 个 API 与 8 个组件。
五、API与组件按需引入
在 Taro 3 中,我们也对打包后 bundle
大小进行了优化。在实际的业务场景中,可能并不会使用到 Taro 提供的所有组件和 API ,但仍然会将所有的组件与 API 及相关依赖打包到最终的 bundle
中,这无疑会增加 bundle
的大小。
为了减少打包后的大小,我们对组件和 API 实现了按需引入的方式,比如:
import Taro from '@tarojs/taro'
Taro.scanCode(options)
//实际打包后的引入会根据页面使用的引入
=> import { scanCode } from '@tarojs/taro-rn/dist/lib/scanCode'
特性
RN
- 更快的编译速度
- 基于全新的编译体系,启动速度提升1倍
- 更便捷的开发调试体验
- 去掉了 webpack 后,source-map 的支持更加简单,这对于开发体验是一个巨大的提升
- 更全面的API和组件
- 新增 38 个API
- 新增 7 个组件
- 更灵活的接入方式
- 支持 React Native 0.60 及以上版本,可自行定制,我们也将探索更多版本的支持
- API 和组件支持按需加载,未使用的原生依赖,无需安装
- 架构完全基于 React Native 生态,相关工具、组件等均可轻松接入
- 更稳定的源码
- 使用 TypeScript、ESlint、Jest,保证代码质量
- 欢迎社区贡献
升级指南
从 v2.x 升级的同学需要先按迁移指南进行操作。
从 v3.x 升级的同学,首先需要安装 v3.2 的 CLI 工具:
npm i -g @tarojs/cli
然后进入项目,删除 node_modules、yarn.lock、package-lock.json。
最后把 package.json
文件中 Taro 相关依赖的版本修改为 ^3.2.0
,再重新安装依赖,至此升级结束。
目前 Taro 3 仅支持 React 开发的项目运行在 React Native 端。
感谢
- 最后,特别感谢为 Taro 从 v3.1 走到 v3.2 贡献过代码的各位同学