Download: **[Taro3最新版本开发企业级出行全栈项目|某课【完结无密】](Taro3最新版本开发企业级出行全栈项目|某课【完结无密】 (lengtang8.com))**
一.目标定位
一套遵循 React 语法规范的多端统一开发框架
一种多端代码转换方案,这里的“端”是指微信小程序、Web、ReactNative、百度小程序、支付宝小程序、头条小程序、快应用等等
具体地,把一份类React源码,通过“编译”转换成兼容目标端的形式,即:
转换
nerv业务代码 ------> xx小程序业务代码 +
Web业务代码 +
ReactNative业务代码
目的是降低开发成本,提高效率:
让原本只能运行在一端的项目获得多端运行的能力,降低开发者的重构成本。
二.思路探索
初衷
用React写微信小程序。
微信小程序原生方式开发起来太费劲,遂想用React开发微信小程序
延伸
在React业务代码转微信小程序代码这个最初的需求实现之后,发现依靠同样的转换思路可以适配多端,即从1对1延伸到1对n:
P.S.其中Nerv是一种类React框架,API与React类似
P.S.Taro组件库之所以以微信小程序为标准,也是初衷使然(都做完了不能浪费啊)
思路
想要一份代码通吃n端,无非2种思路:
直接从1端向n - 1端转换
加一层抽象,从这层抽象转换到n端
以Bash与Batch(Windows批处理脚本)为例,如果只写一份脚本,想既能在*nix跑,又能在Windows跑,第一种思路只需要实现1个东西(从bash向n - 1端转换):
function bash2batch(bash) {undefined
// ...
return equivalentBatch;
}
或者(从batch向n - 1端转换):
function batch2bash(batch) {undefined
// ...
return equivalentBash;
}
如果能实现AtoB,一份A就可以适配A和B了,但“硬”转通常比较困难,因此在Bash与Batch的场景,诞生了第二种思路的实现:
Batsh: A language that compiles to Bash and Windows Batch.
也就是加一层抽象C,再分别实现CtoA和CtoB,从Batsh这层抽象转换到n端:
// 1.定义抽象层Batsh
const batsh = 'Neither bash nor batch';
// 2.实现抽象层向2端转换
function batsh2batch(batsh) {undefined
// ...
return equivalentBatch;
}
function batsh2bash(batsh) {undefined
// ...
return equivalentBash;
}