今天我们来比较两种在跨平台移动应用开发中最具竞争力的编程语言: Dart Vs JavaScript。
Javascript 和 Dart 都是跨平台移动应用程序开发的不错选择,可以从 react Native 和 Flutter 中看出来。与 JavaScript 相比,Dart 非常新,但它有一些非常好用的特性和 Google 的强大支持。
目前,很难从两者中选出最好的一个,但是相对于 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 有许多很酷的特性,这使它成为一种绝对受欢迎的、对程序员友好的语言。
当 Facebook 推出了用于 Web 和移动应用开发的 React & the React Native 框架后,JavaScript 瞬间就成为了最受欢迎的语言。Javascript 本质上是动态的,不需要在客户端编译代码,同时它有自己的包管理器 npm。
Javascript 支持 OOP 和函数式编程,专业开发人员和普通开发人员都非常喜欢。
Javascript 已经在行业中存在了很长时间,是一种成熟稳定的语言。非常容易使用,并且有许多现有的框架和库,开发人员可以使用现有的代码更快地开发应用。
开发人员需要共享和分发代码,因此有成千上万的 JS 包可以使用。对新的开发人员非常友好。
需要注意的是:市面上大量的 JS 库和框架并不都是优质的。 此外,JS 库一般会每隔一段时间发布新版,因此开发人员需要不断学习新的框架,这阻碍了他们的工作效率。
如果你认为 JavaScript 只能用于游戏、桌面、移动和网页应用开发,那么你就错了。它可以从物联网到机器学习再到机器人技术。您可以使用 TensorFlowJS 在浏览器中训练机器模型,并使用 CylonJS 框架来更改 Philips Hue 的照明颜色。
类别 | 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 是 Web 端和服务器端开发无可争议的王者,而 Dart 也在慢慢地发展,它更擅长于移动端跨平台的应用,它几乎具有 JavaScript 的所有灵活性和易用性,发展潜力巨大。因此,对于开发人员社区来说,这是一个双赢的选择,我们可以根据具体的项目和专业知识,从两个语言中选择一个更适合自己的。
来自:https://segmentfault.com/a/1190000022947960
在Dart中,一切都是对象,一切对象都是class的实例,哪怕是数字类型、方法甚至null都是对象,所有的对象都是继承自Object;虽然Dart是强类型语言,但变量类型是可选的因为Dart可以自动推断变量类型
Flutter 提升了客户端开发的效率,但在跟 Native 代码配合开发时也带来了不好的体验。于是我写了个 Flutter 插件 dart_objc ,使开发者可以用 Dart 的语法来写 Objective-C 代码。借助于 Flutter 的热重载,也可以更高效的动态调试 Native 代码
一条执行线上,同时且只能执行一个任务(事件),其他任务都必须在后面排队等待被执行。也就是说,在一条执行线上,为了不阻碍代码的执行,每遇到的耗时任务都会被挂起放入任务队列
如果你的程序中有两个方法,这两个方法桉顺序执行,第一个方法执行需要五秒,如果是同步代码,第二个方法会等待第一个方法执行完,才会被调用,如果第一个方法是异步的,程序在执行第一个方法时
Dart的所有东西都是对象。它们都继承自Object,默认是都是null。Dart中支持以下数据类型:Dart中提供了两种数值类型, 分别是整型int和浮点型double.但如果是直接定义了 int 或者 double , 那么就不能再赋其他类型的值.
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!