Dart在自己的Dart VM中运行,但您可以将其编译为现代优化的JavaScript。但是这有什么作用呢?在线是否有任何文章或论文可以解释这一过程?
我想知道这是否是元素的简单直接匹配元素,开发,处理或者Dart的某些元素/方面只能耗费时间而无法编译为JavaScript。
编辑:thx为你的2个答案。关键是,我告诉我的同事关于飞镖,并且飞镖可以编译成JavaScript。他接受它可以编译为JavaScript但它会导致mumbojumba代码,并且只适用于简单的东西。最后他说:'''好的,请解释一下。这个编译如何在非平凡的代码上工作?'''
这就是我要问的原因。我希望网上有一些材料可以链接他。
答案 0 :(得分:4)
Dart编辑器现在将使用dart2js将您的Dart代码编译为JavaScript。
至于问题的第二部分,dart:io库仅用于服务器/命令行,因此无法使用dart2js进行编译。
我意识到现在我觉得你在问“工程师如何设计和实现dart2js编译器”,而不是“你如何运行dart2js”
这是关于dart2js公告的博文:http://news.dartlang.org/2012/05/new-dart-to-javascript-compiler-ready.html
工程师之一Kasper Lund补充说:“对于技术上感兴趣的人,我可以告诉你新的编译器 使用SSA形式的内部表示(静态单一赋值) 并且编译器完全在Dart中实现。“答案 1 :(得分:1)
网上是否有任何文章或论文可以解释这个过程?
前端是您经典的手动词法分析器和递归下降解析器。后端是,我相信做了一堆类型推断(因为Dart的类型注释太松,不能让你从它们做可靠的静态类型分析,而运行时语义不允许你认真对待类型注释)。如果您寻找有关“具体类型推断”的论文,我相信您会找到一些您正在寻找的文献。此外,任何有关编译为SSA表单的参考(以及我假设从该表单执行代码)都应该有所帮助。
答案 2 :(得分:0)
Kasper lund关于中间表示和已实现的优化。 https://www.youtube.com/watch?v=GwBb_nqQLuc