第三方小程序框架与taro的介绍
多终端统一开发框架,支持一次编写代码,生成可运行于微信/百度/支付宝/字节跳动/小程序/快应用/H5/等应用的开发方式。(官方介绍)
Taro 1.x 版本于2018年9月发布
Taro 2.x正式版将于2020年1月发布
Taro 在不到两年的时间里保持着高速增长,发布了多个重大版本,使得 Taro 成为了一个功能齐全、多终端统一的开发框架,拥有大批忠实的粉丝。
虽然taro框架号称一次编写,多端运行,但是实际操作上还是不建议这么做,由于各个终端的实际情况,有些组件不容易通用,更别说整个项目了。
.0 更改编译构建
这也是为什么 .0 需要更新大版本的主要原因。Taro CLI 原来的编译构建系统就是他们开发的,但后来发现自己的轮子不如现有的轮子好用,所以就换了。虽然新版本对于我们一般的小型项目来说改动不大,但为以后的扩展提供了更好的社区兼容性。
异步编程调整
在Taro 2.0中,不再需要安装@/-来开启支持,而是直接通过插件来获得支持。
在项目根目录中安装包 --- 和 -。
yarn add babel-plugin-transform-runtime --dev yarn add babel-runtime
然后修改项目配置,配置插件---。
babel: { sourceMap: true, presets: [['env', { modules: false }]], plugins: [ 'transform-decorators-legacy', 'transform-class-properties', 'transform-object-rest-spread', ['transform-runtime', { "helpers": false, "polyfill": false, "regenerator": true, "moduleName": 'babel-runtime' }] ] }
新功能
针对小程序编译添加了这个插件,当我们想要发布打包好的小程序时,可能会遇到小程序过大的问题,那么我们肯定很想知道是哪些文件造成了这种影响,我们可以使用--插件来分析包大小。
在mini.xml中添加如下配置
const config = { mini: { webpackChain (chain, webpack) { chain.plugin('analyzer') .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, []) } } }
然后你就可以看到熟悉的界面。
遗憾
虽然 3.0 在底层做出了很多调整,但遗憾的是在项目实际开发中能够用到的功能并不多,更多的是为 taro 未来的发展做铺垫,也让人更加期待 3.0 的发布。
最佳实践
随着社区和生态的发展,为了获得更好的项目协作体验,降低协作难度,我个人比较推荐taro++这样的技术栈组合。
请注意,taro 尚未升级到 .0,因此尚不能使用可选链接。
// 可选链写法暂时无法正常使用 a?.b a?() // 还需要继续使用短路的方式判定 a && a.b a && a() // mobx5 在很多旧机器上会出一些问题,如果没有特殊需求暂时不建议直接使用mobx5
坑
其实,作为一个新生事物,taro 还是存在不少陷阱的,不过本着遇到坑就填坑的原则,一般情况下直接在区域里找就可以了,一般都有解决办法。需要额外说明的是,taro 只能说是一种使用风格,并不是所有功能都完全实现,由于运行环境的限制,很多东西包括生命周期、语法糖、变量作用域使用等都需要自己一步步尝试后再使用,不要完全照搬那一套。
特别是在jsx中使用map遍历生成子节点的时候,变量作用域可能并不是你想象的那样。