簡體   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