原生开发的一些痛点:
-
原生开发对Node、预编译器、webpack支持不好,影响开发效率和工程构建流程
-
微信定义了一个不伦不类的语法,不如正经学vue、react,学会了全端通用,而不是只为微信小程序
-
vue/react生态里有太多周边工具,可以提高开发效率,比如ide、校验器、三方库。。。
-
微信那个ide和专业编辑器相比实在不好用
Taro介绍
Taro 是一套针对以上的痛点和限制,同時遵循 React 语法规范的 多端开发 解决方案
使用 Taro,我们可以只书写一套代码,再通过 Taro 的编译工具,将源代码分别编译出可以在不同端(微信/百度/支付宝/字节跳动/QQ小程序、快应用、H5、React-Native 等)运行的代码
Taro将JSX编译成小程序模板,由于babel的核心编译器Babylon是支持对JSX的语法解析,因此可以通过它帮着构造AST(虚拟语法树),
我们需要专注的就是把AST进行转换,得到需要的新的AST,再将AST进行递归遍历,生成小程序的模板
最核心的技术把源代码编译成AST,再将AST转换操作得到目标代码
在Taro中,我们通过编译时的处理以及运行时的适配来转换成小程序代码
编译时的处理:
运行时框架 @tarojs/taro
编译出来后,不能直接在小程序中运行,小程序需要运行时的适配来帮助我们把代码运行在小程序里。运行时的适配主要是生命周期的转换,还有一些事件的处理。