2012-11-20 35 views
2

飛鏢現在生成複雜的JavaScript代碼。我認爲這是一個主要缺點,我更喜歡TypeScript方法來解決這個問題。在飛鏢中生成的代碼的可讀性

我想聽聽有沒有人知道當時Dart的戰略計劃。 Dart會在未來生成一些可以理解的JavaScript嗎?

+0

飛鏢仍在技術預覽中。目前該語言規範的版本爲0.0.6,預計不久即將達到0.0.7。這遠非「完整」。瀏覽器支持:您可以將Dart反編譯爲JavaScript,最好使用Frog(不是DartC,它編譯爲巨大的JavaScript文件)。 Dartium是支持本地Dart的瀏覽器之一,有爭議的Webkit分支也在某處。我個人的期望是在明年年中得到更具體的東西。根據我的經驗,Google開發人員正在做很多工作以使語言合理和良好,不僅從Java中借用,而且 – 2012-11-20 11:22:19

回答

6

問題是:爲什麼你有興趣查看編譯的代碼?

dart2js爲編譯的代碼生成source maps

當您編譯爲JavaScript時,您應該看到「映射文件」。這些源地圖允許您在Web瀏覽器中查看和調試您的代碼(當前在Chrome中工作,支持Firefox),作爲Dart代碼,即使它正在執行JavaScript。

即使您沒有源代碼映射,您也不需要調試JavaScript代碼。如果您的代碼無法運行,則可能是dart2js或您的代碼存在問題,如果它是您的代碼,則可以使用源地圖在Dartium或Chrome中進行調試。

2

其實我喜歡與「現在的問題是什麼?:爲什麼你有沒有興趣看編譯代碼」打頭的答案,不過,我想補充:

  • 我不認爲生成的JavaScript很糟糕。一旦你明白foo $ 2意味着foo是一個帶有2個參數的函數,它並不是那麼糟糕。

  • dart2js團隊並未嘗試以簡單的方式編譯爲JavaScript。實際上,他們的目標之一就是他們生成的JavaScript應該比手寫的更好,理想上更快。這與C編譯器可以生成比您手動編寫的程序集相比更快的代碼,這是因爲C編譯器可以進行優化,這對於有限的人類大腦來說太難實現了。當dart2js內嵌某些函數時,您已經可以看到這種情況。

但是,正如第一個答案指出的,真正的答案是我們有源映射,因此您應該很少需要查看JavaScript。