JS转Dart转换

时间:2014-03-02 03:12:22

标签: javascript eclipse google-app-engine dart dart-js-interop

这是一个2部分问题。我并不是懒惰,只是在JS中没有从根本上说得足够流利,可以在引用Dart Synonyms page的同时转换整个库。 Dart:js文档解释了如何访问JS全局对象,如本片段所示,但如果我没有弄错,那就不是我想要的了。

Q1:在下面的示例代码段中,使用Dart不会增加Angular的性能,对吗?

var angular = context(['angular']);
var myapp = angular.module('myApp', ['ngResource','ngRoute']);

如果我是对的,而且我确实需要转换Dart中不可用的库,jsparserdart-synonym真的让我感到困惑 - 我找不到任何简单的文档,当我浏览我迷路的实际飞镖。

当我尝试运行并构建Dart Editor时,

jsparser会出错:

  

未处理的异常:   'file:/// C:/ Work Root / Dart / jsparser-ec65c9e7467f / jsparser.dart':格式错误类型:第26行pos 27:类型'选项'未加载     List args = new Options()。arguments;

所以我尝试了dart-synonym;它运行并正确构建,但随后显示了Dart Synonyms page的克隆。

Q2: 如果甚至可以完成自动转换,我该如何使用其中任何一种?

2 个答案:

答案 0 :(得分:2)

Dart-synonym不会自动将其他语言转换为Dart,它只提供静态同义词引用以允许手动转换。

jsparser旨在提供自动转换,但最后一次提交是从一年多前开始的。从那以后发生了很多变化,我怀疑它会在没有对源进行重大调整的情况下运行。例如,一段时间后删除了Options类,这就是您收到格式错误的类型错误的原因。

如果您想在Dart中使用Angular,可以使用Google自己的端口:AngularDart

答案 1 :(得分:1)

可以使用类似的技术amber-lang,特别是因为Dart本质上是带有JS语法的Smalltalk,而amber是编译为JS的Smalltalk。 Amber使用两个基础对象 - STObject JSObject ,允许ST代码调用JS代码,反之亦然。由于amber-lang使用Pharo Smalltalk作为其RI,因此可以使用类似SmaCC(Smalltalk解析器构建器)的lib来生成包装器解析代码。它已经为Java,Python,C和许多其他语言提供了这样的支持。 JS工作的方式,你不能编写,当然也不能调试大型或复杂的应用程序。 Dart尝试按照ST的方式进行,使用强类型系统和语义运行时等效于解释语言,具有接近汇编的速度,但使用JS语法,因为Google有大量的traine node.js程序员

创建Smalltalk VM比JVM更容易,因为它只包含基础对象,与OS库交互的代码,并且本身用Smalltalk编写并转换为C(或跨平台库到F)使用SLANG(MacOS上的CLANG)在MacOS上编写。出于这个原因,IBM Research做了一个可以扩展到1000多个核心的Squeak / Pharo VM(GitHub上的RoarVM)。使用JVM这样做可能需要十年时间。

Smalltalk很慢是一个过时的概念(由于不是基于堆栈,不再重要,而且Sun在JIT for Java上做的工作,其中PoC也在Smalltalk中 - 称为Strongtalk.Pharo&#39 ; s cogit JIT的工作方式基本相同 - 具有纯解释语义的汇编代码。由于MSF4J微服务的速度(缺乏),我不得不离开Java,这些微服务本身是Java中最快的,并且速度比任何时候都快。 JS。我可以在Pharo ST中运行256个微服务,比一个express.js微服务更快的启动时间,更少的内存使用,更好的吞吐量和监控/管理。

将32位虚拟机移植到64位UltraSparc非常简单,这使得软件可以比Cisco产品快速过滤和路由大量监控数据 - 在Cisco ASR上运行的IOS程序-9010。 Sun / Oracle T5220的使用价格约为ASR的1/600,这是一个显着的优势。

喜欢 Dart,但我必须在某种程度上对我说,它只是YAPL,因为它没有做任何与PHaro和琥珀浪。 Smalltalk语法(Ruby类似)比JS(或Java)更具可读性和冗长性。 GO有一些好主意,但还不足以引起很大兴趣。 ST已经有36年的发展历史,没有什么新品能够提供相同的工具或等效的运行稳定性。

查看a4bp以获取Pharo中数据分析和可视化的示例。该网站也是使用Smalltalk内的Graphviz在Pharo中编写的。 SmallTalkHub是Pharo ST和amber-lang的组合。 Amber-lang可以用来包装像Angular这样的库,直到它变得很容易为任意语言编写浏览器插件而且我们不会被JS困住。