技术实践

Dart Vs JavaScript

Javascript 和 Dart 都是跨平台移动应用程序开发的不错选择,可以从 React Native 和 Flutter 中看出来。与

羊先生的头像
羊先生2020.11.12 · 16 分钟阅读 · 47 阅读
Dart Vs JavaScript封面
文章正文还需 16 分钟

今天我们来比较两种在跨平台移动应用开发中最具竞争力的编程语言: Dart Vs JavaScript。

Javascript 和 Dart 都是跨平台移动应用程序开发的不错选择,可以从 React Native 和 Flutter 中看出来。与 JavaScript 相比,Dart 非常新,但它有一些非常好用的特性和 Google 的强大支持。

目前,很难从两者中选出最好的一个,但是相对于 Dart 来说,它有一个很好的发展趋势。

  1. Dart
  2. Javascript
  3. Dart Vs JavaScript
  4. 各自的优缺点
  5. 总结

Dart

Dart 诞生于 2011 年,但是在 2017 之前并不是很受欢迎。 Dart 最初在谷歌内部用于构建网络和移动应用程序。 Dart 编译的源代码类似于 JavaScript,但独立的 Dart SDK 附带了一个 Dart 虚拟机,并且它有自己的包管理器,叫做 pub。

在 2017 年 Google 宣布了跨平台移动应用开发的 Flutter beta 版之后,Dart 的受欢迎程度一直在上升。 拥有 OOP 开发经验的开发者可以很容易地学会 Dart。

对于非 Google 开发者来说,Dart 是一种相当新的语言。尽管 Google 在编写 Dart 编程语言上投入了大量精力,但是开发者仍然很难找到一些特有问题的解决方案。 在编码风格和语法方面,它具有类似 Java 的语法,因此有 OOP 背景的开发人员一旦掌握了基本知识,就可以轻松地掌握和使用 Dart。

在编写 Dart 代码时,它既采用预先编译(AOT),又采用实时编译(JIT)。 这意味着,在你编写代码的时候,Dart 在后台同时编译和执行代码,你就可以得到实时的结果,不用再等待编译!

作为 JavaScript 的一个可靠的替代品,Dart 几乎具有 JavaScript 提供的所有灵活性和易用性。在去年的 JAXenter 投票中,Dart 赢得了最受欢迎的语言的最高票数。Dart 有许多很酷的特性,这使它成为一种绝对受欢迎的、对程序员友好的语言。

Dart 的主要特点

  • 完全面向对象:就像 JavaScript 一样,这个也依赖于对象,如果你喜欢 OOP 概念,那么你会喜欢使用 Dart 进行开发。此外,它还支持接口、Mixin、抽象类和静态类型等。
  • 易于学习:Dart 有一个易于理解的语法,它会让你想起 C 和 JavaScript。你只需要学习它的一些概念,就可以在 Dart 上建立你的第一个项目,因为它的学习曲线更短。
  • 可移植性:Dart 可以轻松地在任何操作系统中工作,运行它时没有特定的硬件配置要求。一个纯粹的 Dart 应用程序可以在大多数主流移动端操作系统中运行,而 Dart 编写的 Web 应用程序可以在任何浏览器中运行。
  • 强大的生产力:一个优秀的编程语言可以在很短的时间内完成大量的困难任务,这就是 Dart 优于大多数其他语言的地方。从语法到幕后工作场景,一切都非常适合于提高开发人员的生产力。此外,如果您遇到某种语言本身无法处理的问题,那么在其官方平台上就会有大量的库和包。
  • 一次编写,适配多种平台:Dart 可以独立管理许多平台,比如移动应用、网络应用、桌面应用、脚本任务和服务器端 / 客户端工作。当然,只需编写一次,就可以轻松地在不同的平台上执行。

Javascript

  • 浏览器支持:所有的浏览器都接受 JavaScript 作为脚本语言文件,并提供集成支持。
  • 函数式编程语言:在 Javascript 中,函数可以像任何其他数据类型一样分配给变量。不仅如此,一个函数还可以接受另一个函数作为参数,也可以返回一个函数,还可以定义匿名函数。
  • 可以在客户端和服务器端使用:JavaScript 可以访问浏览器的文档对象模型(DOM) ,正因为如此,Javascript 可以用来为网页添加不同的效果。此外,Javascript 可以用来做服务器端渲染。
  • 面向对象程序设计:Javascript 是一种面向对象的语言,Javascript 处理对象和继承的方式与传统的面向对象程序设计语言有点不同,比如 Java。正因为如此,Javascript 支持大多数面向对象的概念,并且易于学习和使用。

Dart 对比 JavaScript

易用性

Dart:在编码风格和语法方面,它具有类似于 Java 的语法,有 OOP 背景的开发人员可以轻松地使用
Javascript:是一种成熟的、易于使用的、稳定的语言,拥有大量的框架和在线库

生产力

Dart:有一个基于 Dart 和 Flutter 的相对较小的社区。尽管提供了很好的文档,许多有经验的开发人员仍然对 Dart 感到困惑
JavaScript:新开发者更容易采用 JavaScript 编程,因为 JavaScript 是更快、轻量级和动态的编程语言。它提供了无数的 JS 框架和成千上万的 NPM 包,可以提高开发人员的工作效率

学习曲线

Dart:对于初学者来说,学习 Dart 可能会让他们望而却步,因为它不是一种常用的编程语言,而且对于 Dart 编程语言来说,在线课程和书籍非常有限
JavaScript:对于非程序员来说,学习 JavaScript 并不是一件容易的事情,但是了解基本的编程概念可以使 JavaScript 更容易学习。对于那些希望学习 JavaScript 的开发者来说,有很多在线课程和教程可供选择

受欢迎程度

Dart:随着阿里巴巴(Alibaba)和谷歌(Google)等大厂开始采用 Flutter,它的受欢迎程度正在上升,成为 React native 的替代品。不过,要与 JavaScript 的流行程度相匹配还有很长的路要走。
JavaScript:JavaScript 非常受欢迎,无处不在,世界上没有不运行 JavaScript 的设备

前端 Vs 后端

Dart:主要用于开发跨平台移动应用程序的前端
Javascript:可用既可以用于前端也可以用于服务器端

类型安全

Dart 比 JavaScript 更加类型安全,因为它既支持弱类型,也支持强类型
Javascript 不是一种类型安全的语言,因为它同时支持动态类型和 Duck 类型。 只有在运行时才能发现编程错误

IDE 支持

Dart 代码可以通过 Sublime 或 VIM 这样的轻量级编辑器来开发,此外 IntelliJ IDEA 和 AndroidStudio 都带有 Dart 插件,是 Dart 应用开发中最常用的 IDE,尤其是在 Flutter 应用开发中
JavaScript 并不总是需要一个成熟的 IDE,因为开发人员可以使用各种编辑器,比如 VIM、Sublime Text、Emacs、Atom、WebStorm、VSCode。
商业用途

除了谷歌之外 Dart 也被一些大品牌使用,比如 Blossom,WorkTrails,Whale,Mobile 等
Javascript 广泛应用于 Instagram、 Reddit、 ebay、 Slack 和 Airbnb 等大公司,用于开发网络和跨平台移动应用程序

开发场景

Dart 既可以用于 Web,也可以用于移动端应用程序的开发
JavaScript 通过各种框架来开发对应的移动应用、Web 应用的

速度

Dart 比 JavaScript 快得多,因为它可以同时编译 AOT 和 JIT,这有助于以多种方式构建应用程序,因为使用 JIT 编译可以加快开发速度,并且 AOT 编译可以在发布过程中用于更好的优化。该技术已在 Flutter 中得到了应用。
JavaScript 是一个解释型语言,运行时需要一边解释一边执行,相对 Dart 较慢

优缺点比较

JavaScript 优点
支持前端和后端开发

跨平台

大量有用的流行框架
它速度快,重量轻,灵活

Dart 优点

它更值得信任,因为它有谷歌的支持
它运行的速度是 JavaScript 的两倍
它可以在不同的项目中扩展
它被广泛用于 Flutter 移动端开发
Dart 是类型安全的,使用 AOT 和 JIT 编译器编译
开源的

Dart 缺点

与 JavaScript 相比,生态系统不够完善
Dart 相关资源非常有限,很难找到解决问题的办法
Dart 对于程序员来说是一门新语言,市场上使用量较少

JavaScript 缺点

没有提供良好的客户端安全性。如果一个恶意网站加载到你的浏览器上,那么该代码将运行,并可能损害设备。在这种情况下,唯一的解决方案就是禁用 JavaScript
一个错误可能导致整个网站停止加载
不支持多线程
框架更新比较频繁

总结

通过这次对比,我们可以得出结论: JavaScript 是 Web 端和服务器端开发无可争议的王者,而 Dart 也在慢慢地发展,它更擅长于移动端跨平台的应用,它几乎具有 JavaScript 的所有灵活性和易用性,发展潜力巨大。因此,对于开发人员社区来说,这是一个双赢的选择,我们可以根据具体的项目和专业知识,从两个语言中选择一个更适合自己的。