2014-03-02 102 views
1

這是一個2部分的問題。我並不懶惰,根本沒有足夠流暢的JS來轉換整個庫,同時引用Dart Synonyms page它似乎。 Dart:js文檔解釋瞭如何訪問JS全局對象,如這段代碼所示,但如果我沒有弄錯,這不是我要找的。JS to Dart轉換

Q1:在下面的示例代碼片段中,它不會通過使用Dart來增加Angular的性能,對嗎?

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

如果我是對的,我也需要轉換在DART無法圖書館,jsparserdart-synonym真的絆倒了我 - 我無法找到任何簡單的文檔,當我通過實際飛鏢看我走開。

未處理的異常: '文件:/// C:/工作根/飛鏢/ jsparser-ec65c9e7467f/jsparser.dart'

Dart Editor當我嘗試運行和構建jsparser踢的錯誤:格式錯誤的類型:第26行pos 27:type'Options'未加載 List args = new Options()。arguments;

所以我試了dart-synonym;它運行並正確構建,但後來顯示Dart Synonyms page的克隆。

Q2:如果甚至有可能實現自動轉換,如何使用其中任何一種?

+0

可能的重複[是否有轉換器的JavaScript到飛鏢?](http://stackoverflow.com/questions/7719629/is-there-a-converter-of-javascript-to-dart) – user7610

回答

2

Dart同義詞不會自動將其他語言轉換爲Dart,它僅提供靜態同義詞引用以允許手動轉換。

jsparser是爲了提供自動轉換,但最後一次提交是從一年多以前。從那以後,很多東西都發生了變化,我懷疑它會在沒有顯着調整的情況下運行。例如,Options類被刪除了一段時間,這就是爲什麼你會收到格式錯誤的類型錯誤。

如果你想在DART使用角度,你可以使用谷歌自己的端口:AngularDart

+0

好吧。 :)我放棄了,我正在學習飛鏢,同義詞沒有我想象的那麼難。對不起懶惰,謝謝! –

+0

如果您不想移植和維護龐大的第三方JS庫,該怎麼辦?有沒有什麼方法可以編寫「環境」聲明,或者圍繞現有JavaScript API精簡「包裝器」,以便它們可以從Dart代碼中舒適地使用(具有類型安全性和其他優點)? –

1

可以使用類似的技術來amber-lang,特別是因爲飛鏢基本上與JS語法Smalltalk的,而琥珀的Smalltalk編譯爲JS。 Amber使用兩個基礎對象 - STObjectJSObject,允許ST代碼調用JS代碼,反之亦然。由於琥珀色的lang使用Pharo Smalltalk作爲RI,因此可以使用像SmaCC(Smalltalk解析器構建器)之類的庫來生成包裝器解析代碼。它已經爲Java,Python,C和許多其他語言提供了這種支持。 JS的工作方式,你不能寫,也不能調試,一個大型或複雜的應用程序。 Dart試圖以ST的方式進行,具有強大的類型系統和相當於解釋語言的語義運行時,具有接近彙編速度,但是使用JS語法,因爲Google擁有大量traine node.js程序員。

創建Smalltalk虛擬機比類似JVM的容易得多,因爲它只包含基本對象,與OS庫互操作的代碼,並且它本身是用Smalltalk編寫的,並轉換爲C(或者跨平臺庫到MacOS上的F腳本)使用SLANG(CLOS在MacOS上)。出於這個原因,IBM Research開發了一個Squeak/Pharo虛擬機,可以擴展到超過1000個內核(GitHub上的RoarVM)。用JVM做這件事可能需要十年時間。

Smalltalk很慢是一種過時的概念(由於不是基於堆棧,這不再重要,Sun也在JIT for Java上工作,其中PoC也在Smalltalk中 - 稱爲Strongtalk。 JIT的工作原理基本上是一樣的 - 彙編代碼和純解釋語義,由於MSF4J微服務的速度(缺少),我不得不離開Java,它本身是Java中速度最快的,並且比JS中的任何東西都快。可以在Pharo ST上運行256個微服務,啓動時間更短,內存使用更少,吞吐量更少,監控管理更快,而不僅僅是一個express.js微服務。導致可以過濾和路由大量的軟件的監控數據速度明顯快于思科的產品 - 運行在Cisco ASR-9010上的IOS程序。 Sun/Oracle T5220的價格約爲ASR價格的1/600,這是一個顯着的優勢。

飛鏢,但我不得不說在某種程度上對我來說這只是YAPL,因爲它沒有做任何不可能與PHaro和琥珀朗的組合。 Smalltalk語法(Ruby類似)比JS(或者Java)更具可讀性和冗長性。 GO有一些很好的想法,但還不足以產生太多興趣。 ST已經有36年的發展歷史,沒有什麼全新的東西會提供等效的工具或同等的運行時穩定性。

查看a4bp瞭解Pharo中數據分析和可視化的示例。該網站也使用Smalltalk中的Graphviz編寫在Pharo中。 SmallTalkHub是Pharo ST和琥珀色的組合。 Amber-lang可以用來包裝像Angular這樣的庫,直到它爲任何語言編寫瀏覽器插件變得很容易,並且我們不會被JS束縛。