今天我们来比较两种在跨平台移动应用开发中最具竞争力的编程语言: Dart Vs JavaScript。
Javascript 和 Dart 都是跨平台移动应用程序开发的不错选择,可以从 React Native 和 Flutter 中看出来。与 JavaScript 相比,Dart 非常新,但它有一些非常好用的特性和 Google 的强大支持。
目前,很难从两者中选出最好的一个,但是相对于 Dart 来说,它有一个很好的发展趋势。
- Dart
- Javascript
- Dart Vs JavaScript
- 各自的优缺点
- 总结
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 可以独立管理许多平台,比如移动应用、网络应用、桌面应用、脚本任务和服务器端 / 客户端工作。当然,只需编写一次,就可以轻松地在不同的平台上执行。
与 Dart 集成的工具
- Flutter 由 Google 开发的跨平台移动用户界面框架。
- Aqueduct 多线程服务器端框架。
- Dartwebdev 一个使用谷歌的服务集成来开发网络应用程序。
- Angular Dart 另一个替代 Dart 开发 Web 端的库。
Javascript
当 Facebook 推出了用于 Web 和移动应用开发的 React & the React Native 框架后,JavaScript 瞬间就成为了最受欢迎的语言。Javascript 本质上是动态的,不需要在客户端编译代码,同时它有自己的包管理器 NPM。
Javascript 支持 OOP 和函数式编程,专业开发人员和普通开发人员都非常喜欢。
Javascript 已经在行业中存在了很长时间,是一种成熟稳定的语言。非常容易使用,并且有许多现有的框架和库,开发人员可以使用现有的代码更快地开发应用。
开发人员需要共享和分发代码,因此有成千上万的 JS 包可以使用。对新的开发人员非常友好。
需要注意的是:市面上大量的 JS 库和框架并不都是优质的。 此外,JS 库一般会每隔一段时间发布新版,因此开发人员需要不断学习新的框架,这阻碍了他们的工作效率。
如果你认为 JavaScript 只能用于游戏、桌面、移动和网页应用开发,那么你就错了。它可以从物联网到机器学习再到机器人技术。您可以使用 TensorFlowJS 在浏览器中训练机器模型,并使用 CylonJS 框架来更改 Philips Hue 的照明颜色。
Javascript 的主要特性
- 浏览器支持:所有的浏览器都接受 JavaScript 作为脚本语言文件,并提供集成支持。
- 函数式编程语言:在 Javascript 中,函数可以像任何其他数据类型一样分配给变量。不仅如此,一个函数还可以接受另一个函数作为参数,也可以返回一个函数,还可以定义匿名函数。
- 可以在客户端和服务器端使用:JavaScript 可以访问浏览器的文档对象模型(DOM) ,正因为如此,Javascript 可以用来为网页添加不同的效果。此外,Javascript 可以用来做服务器端渲染。
- 面向对象程序设计:Javascript 是一种面向对象的语言,Javascript 处理对象和继承的方式与传统的面向对象程序设计语言有点不同,比如 Java。正因为如此,Javascript 支持大多数面向对象的概念,并且易于学习和使用。
与 JavaScript 集成的工具
- Auth0 一个基于 token 的注册工具
- Yarn 一个包管理器和一个很好的替代 NPM
- Gatsby JS 一个用 React 构建的网站框架
- Eslint 一个流行的 JavaScript 代码检查器
- Azure Cosmos DB 微软的全球分布式数据库服务
- Algolia 用于建立搜索结果的 API
- Lodash 一个函数式编程的工具库
- Circleci 一个流行的持续集成和交付平台
Dart 对比 JavaScript
类别 | Dart | JavaScript |
---|---|---|
易用性 | 在编码风格和语法方面,它具有类似于 Java 的语法,有 OOP 背景的开发人员可以轻松地使用 Dart | Javascript 是一种成熟的、易于使用的、稳定的语言,拥有大量的框架和在线库 |
生产力 | 有一个基于 Dart 和 Flutter 的相对较小的社区。尽管提供了很好的文档,许多有经验的开发人员仍然对 Dart 感到困惑 | 新开发者更容易采用 JavaScript 编程,因为 JavaScript 是更快、轻量级和动态的编程语言。它提供了无数的 JS 框架和成千上万的 NPM 包,可以提高开发人员的工作效率 |
学习曲线 | 对于初学者来说,学习 Dart 可能会让他们望而却步,因为它不是一种常用的编程语言,而且对于 Dart 编程语言来说,在线课程和书籍非常有限 | 对于非程序员来说,学习 JavaScript 并不是一件容易的事情,但是了解基本的编程概念可以使 JavaScript 更容易学习。对于那些希望学习 JavaScript 的开发者来说,有很多在线课程和教程可供选择 |
受欢迎程度 | 随着阿里巴巴(Alibaba)和谷歌(Google)等大厂开始采用 Flutter,它的受欢迎程度正在上升,成为 React native 的替代品。不过,要与 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 的所有灵活性和易用性,发展潜力巨大。因此,对于开发人员社区来说,这是一个双赢的选择,我们可以根据具体的项目和专业知识,从两个语言中选择一个更适合自己的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。