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