Dart 是 Google發明的一種新的編程語言。在使用JavaScript一年多之後,我對Dart可謂是一見傾心。我之前是作Java的,我在用JS的時候要學習不少新東西。javascript
有人說你必須深刻研究JavaScript,不然你沒有資格評論它。我不是JS高手,可是我堅信一門編程語言應該易於學習,易於理解,而且語言結構要合理。雖然我也長時間和JS打交道,雖然我也知道JS有不少酷的功能,可是我仍是天天得當心翼翼的處理JS的問題。這就很很差,編程語言應該對程序員友好,而不是程序員去伺候一門語言。html
下面我將列出Dart比JavaScript強的地方,也是吸引我轉移到Dart的緣由。java
雖然多種否認條件也沒有問題,可是明顯程序變的複雜和難以閱讀,並且你須要學習各類否認條件。程序員
Dart可使用類型
JS開發者每每強調,類型會下降靈活性。OK,也許是對的。可是過多的靈活性會讓你的軟件崩潰。有時候,你須要用到類型,在Dart中,這就能夠實現,你能夠啓用類型檢查。web
JS須要一個框架來解析DOM
看看JS的這些方法吧:
01
getElementsById()
02
getElementsByTagName()
03
getElementsByName()
04
getElementsByClassName()
05
querySelector()
06
querySelectorAll()
07
document.links
08
document.images
09
document.forms
10
document.scripts
11
formElement.elements
12
selectElement.options
強大嗎?可是咱們有JQuery,Dart學習了JQuery,只有兩個方法:
1
elem.query('#foo');
2
elem.queryAll('.foo');編程
類和接口
當Java開發者剛開始寫JS的時候,他們老是把JS寫的跟Java同樣。他們會寫類和構造函數,很顯然,JS不是這麼玩的。在JS中,任何東西都是對象,這看起來很酷,可是那些設計模式就沒有用了。取而代之的是JavaScript的設計模式。但這給開發者形成了不少困惑,也讓代碼一團糟。設計模式
繼承
用JavaScript有不少方式實現繼承,例如 Dr. Rauschmayer 博客(http://www.2ality.com/2011/11/javascript-classes.html)中講的那樣。或者你也能夠用Prototype和jQuery框架,或者你也能夠本身實現一套繼承的機制。這樣就很混亂,爲了實現繼承這個目標,JS有不少不一樣的作法,讓人頭疼。數組
Dart有類這個概念,因此也就有「extends」這個關鍵詞。一切都很簡單!服務器
Dart默認是「library」範圍,只有聲明爲 public 的東西才能被外部訪問。這樣就很簡單,不一樣的腳本不會相互影響。框架
Dart支持並行,支持Isolates,這有點像Erlang。當一個Isolate失敗的時候,另一個Isolate能夠重啓這個Isolate。這是否是很酷?這讓Dart適合服務器端編程。是的,我知道Node.js,可是Dart天生支持這個功能。
使用Dart:
1
for (element in elements) {
2
// do something
3
}
沒有比這更簡單了吧。
Dart就很清晰:
1
List a1 = [1,2,3,4,5];
2
List a2 = new List(5);
10. undefined 和 null
在JS中,這兩個值大多數狀況能夠互換,但有時候又不是,讓人很頭疼。Dart只有null。
總結
JS有不少優勢,有一些不錯的模式。可是到目前爲止,我尚未發現什麼JS能作而Dart不能作的。Dart明顯更優雅,更易於閱讀(對我而言)。也許有一些JS狂人以爲JS好,能夠理解。
http://www.grobmeier.de/10-reasons-why-dart-is-cooler-than-javascript-03012012.html