DSL 是什么
DSL(Domain Specific Language)是一种用来解决特定领域问题的计算机编程语言我们经常使用的CSS、SQL都属于DSL。还有其他的比如模版语言,从名字就可以知道他是一种领域特定语言,另外Docker的镜像描述文件Dockerfile也是一种DSL, 与领域特定语言相对的就是通用编程语言比如C#、Java等。
对于实现DSL来说有些不同,我们不需要关心底层的机器指令生成,一般做法先通过编译器前端将DSL解析为抽象语法树,再使用访问者模式和迭代器模式遍历抽象语法树生成目标代码,这里目标代码可能是另一种高级语言的源代码。Transpiling (转译)是一种特殊Compiling(编译), 用于将一种语言编写的源代码转换为另一种具有相同抽象层次的语言。比如使用babel将ES6 转换成ES5,使用tsc将typescript编译到javascript,
时的微信小程序的开发存在一些缺点,比如依赖管理混乱、工程化流程落后、ES Next 支持不完善、命名规范不统一等。这些问题在现在看来都已经有了各种官方或非官方的解决办法,但是在当时小程序开发的探索阶段,这些问题都是一些痛点问题
当一门语言的能力不足,而用户的运行环境又不支持其它选择的时候,这门语言就会沦为 “编译目标” 语言
而taro 1/2是基于编译时;生成微信小程序原生代码 taro 3.0开始是基于运行时