繁体   English   中英

JS转Dart转换

[英]JS to Dart Conversion

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

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

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

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

当我尝试运行并构建jsparser时, Dart编辑器会出错:

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

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

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

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

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

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

可以使用类似的技术来使用amber-lang ,特别是因为Dart本质上是带有JS语法的Smalltalk,而amber是编译为JS的Smalltalk。 Amber使用两个基础对象--STObjectJSObject ,允许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-Script) MacOS)使用SLANG(MacOS上的CLANG)。 出于这个原因,IBM Research做了一个可以扩展到1000多个核心的Squeak / Pharo VM(GitHub上的RoarVM)。 使用JVM这样做可能需要十年时间。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM