-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第 66 题:ES6 代码转成 ES5 代码的实现思路是什么 #112
Comments
将ES6的代码转换为AST语法树,然后再将ES6 AST转为ES5 AST,再将AST转为代码 |
题目说的是 ES6,所以不考虑
如果不用工具,纯人工的话,就是使用或自己写各种 polyfill 了。 |
把 ES6 代码转成 ES5 代码的实现思路可以分成三步:
喔,不对,原谅我开了个玩笑,嗯,有点冷…… 回到正题上来,说到 ES6 代码转成 ES5 代码,我们肯定会想到 Babel。所以,我们可以参考 Babel 的实现方式。 那么 Babel 是如何把 ES6 转成 ES5 呢,其大致分为三步:
基于此,其实我们自己就可以实现一个简单的“编译器”,用于把 ES6 代码转成 ES5。 比如,可以使用 如果有误,希望可以帮忙指出来,多谢。 |
说说我的理解哦 babel在做语法转换的时候,通过抽象语法树来实现代码层面的翻译。 对于新的类、类方法,实例方法,基本就是polyfill,或者polyfill加上代码转换。 |
ES6 代码转换成 ES5 的思路大家都讲的差不多,我来做个补充。 Babel 将把 ES6 转成 ES5 第二步,从 Babel 6.0 开始,就不再对代码进行转换。现在 Babel 只负责parse 和 generate 流程,也就是专注于解析和生成阶段。转换代码的 transform 过程全都交给bable插件去做了。 我们的项目里的 |
借用babel转换思想,将es6解析成AST,然后按照统一规则转换修改AST,再将AST解析成es5 |
涉及到的主要是AST相关的内容,AST(Abstract Syntax Tree)中文叫抽象语法树,是用来表示源代码语法的一种树形结构,树上的每个节点都代表源代码的一种结构。AST在我们日常应用中非常广泛,我们的代码高亮,代码检查等都是依靠的AST。 那么ES6转ES5的思路,其实就是在处理AST的过程中进行操作。转化代码的流程一般分为三步
现在一般使用的就是bable转ES6,具体的ES6转ES5在第二步中的逻辑,那就得看bable中转ES6的 |
这问的是问题么? |
ES6转ES5分为以下两种情况 补充说明
|
ES6 代码转成 ES5 代码的实现思路是什么
关于ASTAST的全称是abstract syntax tree,中文名叫抽象语法树,假设有一个函数,
这段代码被解析成的ast树就是
这样看起来还不是很直观,其实上面的树就等于
有了这个json后,就可以对代码进行操作了。在没有树的情况下,如果要对文件里的某一个语句进行替换的话,一般就是全局 |
使用babel
|
No description provided.
The text was updated successfully, but these errors were encountered: