lgwebdream / FE-Interview

🔥🔥🔥 前端面试,独有前端面试题详解,前端面试刷题必备,1000+前端面试真题,Html、Css、JavaScript、Vue、React、Node、TypeScript、Webpack、算法、网络与安全、浏览器
https://lgwebdream.github.io/FE-Interview/
Other
6.77k stars 897 forks source link

Day305:说一下 Taro 编译的原理? #1129

Open Genzhen opened 3 years ago

Genzhen commented 3 years ago

每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 欢迎大家在下方发表自己的优质见解

二维码加载失败可点击 小程序二维码

扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。


一、命令

taro build:xxx,是执行编译的命令,根据不同的参数,把代码编译成 h5、小程序、React Native 等

二、编译流程

2.1 AST

抽象语法树(abstract syntax tree 或者缩写为 AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。

2.2 parse tree

具体语法树(concrete syntaxtree),通常称作分析树(parse tree)。一般的,在源代码的翻译和编译过程中,语法分析器创建出分析树。一旦 AST 被创建出来,在后续的处理过程中,比如语义分析阶段,会添加一些信息。

2.3 编译

无论是 h5、小程序、还是 Rn,都有一个共同的部分: 都可以将源代码作为纯文本解析为 抽象语法树(abstract syntax tree, AST) 的数据结构。

当源代码解析成 AST 后,根据不同的平台的语法树规则,产生对应平台的语法树,然后产生代码。

这样就可以做到一套代码,不同平台执行

2.4 taro 编译步骤

image

  1. 先 parse,将代码 解析(Parse)成 抽象语法树(AST)。
  2. 然后对 AST,进行遍历(traverse)和替换(replace)
  3. 最后是生成,根据新的 AST 生成编译后的代码。