Dart 是 Google发明的一种新的编程语言。在使用JavaScript一年多以后,我对Dart可谓是一见钟情。我以前是做Java的,我在用JS的时候要学习很多新东西。
有人说你必须深入研究JavaScript,否则你没有资格评论它。我不是JS高手,但是我坚信一门编程语言应该易于学习,易于理解,并且语言结构要合理。虽然我也长时间和JS打交道,虽然我也知道JS有很多酷的功能,但是我还是每天得小心翼翼的处理JS的问题。这就很不好,编程语言应该对程序员友好,而不是程序员去伺候一门语言。
下面我将列出Dart比JavaScript强的地方,也是吸引我转移到Dart的原因。前端框架分享
1. Dart只有一种否定条件
在JS中,你可以用 false, null, undefined,"",0,NaN 作为否定条件,例如:
在Dart中,只有 false 才是否定条件,上面的代码必须写成这样:
虽然多种否定条件也没有问题,但是明显程序变的复杂和难以阅读,而且你需要学习各种否定条件。
2. Dart可以使用类型
JS开发者往往强调,类型会降低灵活性。OK,也许是对的。但是过多的灵活性会让你的软件崩溃。有时候,你需要用到类型,在Dart中,这就可以实现,你可以启用类型检查。 前端框架分享
3. JS需要一个框架来解析DOM
看看JS的这些方法吧:
02 |
getElementsByTagName() |
04 |
getElementsByClassName() |
强大吗?但是我们有JQuery,Dart学习了JQuery,只有两个方法:
4. 类和接口
当Java开发者刚开始写JS的时候,他们总是把JS写的跟Java一样。他们会写类和构造函数,很显然,JS不是这么玩的。在JS中,任何东西都是对象,这看起来很酷,但是那些设计模式就没有用了。取而代之的是JavaScript的设计模式。但这给开发者造成了很多困惑,也让代码一团糟。
5. 继承
用JavaScript有很多方式实现继承,例如 Dr. Rauschmayer 博客(http://www.2ality.com/2011/11/javascript-classes.html)中讲的那样。或者你也可以用Prototype和jQuery框架,或者你也可以自己实现一套继承的机制。这样就很混乱,为了实现继承这个目标,JS有很多不同的做法,让人头疼。
Dart有类这个概念,所以也就有“extends”这个关键词。一切都很简单!
6. 全局名字空间
在JS中,如果你有什么变量在全局级别的话,所有的脚本都可以访问这个变量,这就很恐怖,代码会变的很混乱感。后来我学习了Stoyan Stefanovs Book JavaScript Patterns (http://astore.amazon.de/neoteccde-21/detail/0596806752),我的命名空间从此变的很干净。但是为什么这种基本的功能语言不能自带,而需要通过所谓的模式来解决这个问题呢? 前端框架分享
Dart默认是“library”范围,只有声明为 public 的东西才能被外部访问。这样就很简单,不同的脚本不会相互影响。
7. Dart支持并行
JS是没有真正的并行的。即使你通过jQuery发出一个异步请求,你也只有一个线程在工作。你可以通过HTML5,webworkers来解决这个问题。
Dart支持并行,支持Isolates,这有点像Erlang。当一个Isolate失败的时候,另外一个Isolate可以重启这个Isolate。这是不是很酷?这让Dart适合服务器端编程。是的,我知道Node.js,但是Dart天生支持这个功能。
8. JS 不支持 foreach
在JS中,你这样遍历数组:
1 |
for ( var i = 0; i < elements.length; i++) {
|
或者你可以这样来遍历对象:
1 |
for (key in elements) {
|
但这种方式是不推荐的。因为这种遍历方式得到的结果是不确定的,你也有可能拿到方法名字等你不想要的东西。当然,jQuery是你的救星!
使用Dart:
1 |
for (element in elements) {
|
没有比这更简单了吧。
9. 奇怪的数组初始化
看看这段代码:
1 |
var a1 = new Array(1,2,3,4,5);
|
a1 是有五个元素的数组 [1,2,3,4,5]
a2 是有五个元素的数组 [undefined,undefined,undefined,undefined,undefined]
Dart就很清晰:
10. undefined 和 null
在JS中,这两个值大多数情况可以互换,但有时候又不是,让人很头疼。Dart只有null。
总结
JS有很多优点,有一些不错的模式。但是到目前为止,我还没有发现什么JS能做而Dart不能做的。Dart明显更优雅,更易于阅读(对我而言)。也许有一些JS狂人觉得JS好,可以理解。
分享到:
相关推荐
JavaScript 的历史包袱和 Dart 语言的出现 JavaScript 作为一门脚本语言,具有悠久的历史,自 Netscape 时代起步,逐步壮大,直到 AJAX 的兴起,JavaScript 成为网络应用的核心语言。然而,JavaScript 同时也存在...
该项目名为cashmere_core,是一款融合Rust、Dart和JavaScript的多语言开发框架源码。该框架共包含684个文件,其中Rust语言编写文件366个,Dart语言编写文件169个,并涉及少量Toml、Proto、Yml、Md、Json、Js、Crt和...
2. Dart编译器:包括dart2js(将Dart代码编译为JavaScript,以便在Web上运行)和dart2native(将Dart代码编译为原生机器码,提升运行性能)。 3. DevTools:一套强大的开发者工具,包括用于调试、性能分析、内存管理...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间的数据传输。在Flutter开发中,由于其跨平台的特性,经常需要处理JSON数据与Dart对象之间的转换。`JsonToDart`是一个针对...
- **Web开发优势**:Dart编译后的JavaScript代码可与现有前端代码库配合,提供更流畅的开发体验。 6. **学习资源** - **官方文档**:dart.dev是Dart的官方文档,提供了详细的API参考、教程和最佳实践。 - **社区...
Dart是一种由Google开发的高性能、现代的、面向对象的编程语言,它的设计目标是提供一个高效的开发平台,尤其在Web应用开发领域,旨在替代JavaScript并与其无缝集成。Dart的出现是为了应对JavaScript的一些局限性,...
5. **编译优化**:Dart 2.4 在编译器层面做了优化,生成的 JavaScript 代码更快,使得 Web 应用的启动时间和运行性能得到改善。 6. **更好的库支持**:Dart SDK 2.4 更新了许多内置库,如 `dart:io`(用于处理输入/...
具体操作包括在用户变量中新建一个名为"DART_SDK"的变量,其值为Dart SDK的安装路径。 4. 验证安装成功,通过命令行输入`dart --version`查看Dart版本。 对于Mac系统,安装步骤类似,但配置环境变量需要编辑`.bash_...
【Dart_v2.4.0.zip】是一个包含Dart SDK的压缩文件,版本为2.4.0。Dart是一种由Google开发的面向对象、类定义的编程语言,设计用于构建高性能的Web、移动和服务器应用程序。在这个压缩包中,用户可以获得Dart SDK的...
为了更方便地进行Dart开发,推荐安装一个代码编辑器或集成开发环境(IDE)。Visual Studio Code是一个流行的选择,它有很好的Dart支持。你可以从VS Code的扩展商店安装Dart和Flutter插件,这将提供代码补全、错误...
2. **dart2js**:这是一个编译器,将Dart源代码转换为JavaScript,使得Dart应用程序能在Web浏览器中运行。 3. **dartfmt**:这是一个代码格式化工具,保持代码风格的一致性,提升团队协作效率。 4. **pub**:Dart...
Dart SDK 是一个全面的开发工具集,用于编写和运行 Dart 语言编写的程序。Dart 是谷歌推出的一种现代化的、面向对象的、类型安全的编程语言,设计目标是提供高性能、易于使用的工具来构建现代Web和移动应用程序。在...
Dart语言是一款面向对象的基于类概念的编程语言,从去年的泄露电子邮件来看,Dart在保留JavaScript动态性的同时,提供了更好的性能表现以及更加适应大型工程开发等特性。 相比于Javascript,Dart在设计中更多地考虑...
在本文中,我们将深入探讨Dart编程语言中的一个重要工具——Dart2Json插件,以及它如何帮助开发者处理JSON序列化和反序列化的过程。Dart2Json是Dart社区中广泛使用的工具,用于将JSON对象自动转换为Dart类,从而简化...
Dart 2.1是一个重要的更新,它带来了许多性能提升和语言改进,包括类型推断的增强、更好的错误处理机制和对null安全的支持。 描述中提到的“dartsdk2.1 release版本”是指这个软件包是一个正式发布的稳定版本,意味...
而dart2js是一个编译器,能够将Dart代码编译成与Dart脚本等效的JavaScript代码,使其能够在现有的Web浏览器中运行。 Dart程序由一个或多个函数组成,其中main()函数是Dart程序的入口点。所有Dart脚本必须有一个main...