大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
前不久发文对比了 Flutter 与 PHA 等应用的区别,了解到 Flutter 底层使用了 Dart 语言,笔者虽然没有使用 Flutter 进行过线上项目的开发和部署,但是还是决定通过本文带着大家一起了解下该语言。下面是已经发表的文章传送门,欢迎大家阅读:
作为忠实的 JavaScript 流派,对于很多前端新兴的编程语言还是充满了好奇,比如:Dart、Zig、Mojo(已经发文介绍过)等等。话不多说,直接开始!
Dart 是一种编程语言,最初在 Google 内部用于构建 Web、服务器和移动应用程序。 Dart 自 2011 年以来一直存在,但在 Google 之外并没有引起任何关注。 Dart 编译源代码的方式与其他编程语言(如 JavaScript)类似,但是包含一个独立的 Dart SDK 。
与其他编程语言不同,Dart 有自己的包管理器。2017 年,当谷歌正式宣布将 Dart 用于跨平台移动应用程序开发的 Flutter 测试版时,Dart 开始受到更多关注,热度逐年上升。比如上图展示了自 2018 年大会上发布 Flutter 以来 Dart 的发展情况。
了解一门语言最快的方法是了解其语言特性,从而快速判断是否适合当前项目。Dart 是一种面向对象的开源编程语言,包含许多有用的特性。 Dart 是一种新的编程语言,支持广泛的编程实用程序,例如:接口、集合、类、动态和可选类型。 它是为服务器和浏览器开发的。
以下是重要的 Dart 特性列表。
文章上面部分介绍了 Dart 语言的核心特征,接下来带着大家一起比较下 Dart 和 JavaScript 两门语言,以便大家更好的认识 Dart。
JavaScript 在业界存在的时间更长,是一种成熟稳定的语言。 JavaScript 非常易于使用。 它有许多在线可用的框架和库,因此开发人员可以使用现有代码更快地开发应用程序。 但是,但为了学习 JavaScript 语法,开发者仍然需要一般编程的基本技术知识。
对于 Google 以外的大多数开发人员来说,Dart 是一种相当新的语言。 尽管谷歌在文档化 Dart 编程语言方面付出了很多努力,但开发人员仍然很难找到针对特定问题的解决方案。 在编码风格和语法方面,Dart 具有类似 Java 的语法,因此具有OOPS背景的开发人员只要学习了基础知识就可以轻松掌握和使用Dart。
目前,JavaScript 无处不在, 世界上没有不能运行 JavaScript 的设备。 有许多公司正在使用 JavaScript 框架来开发 Web 和移动应用程序。 JavaScript 还可用于编写服务器端应用程序和后端。
在 Google 发布 Flutter 之前,Dart 还无迹可寻。 然而,自从在 Google I/O 上宣布 Flutter 以来,Dart 受到了移动开发人员的极大关注。 不喜欢 JavaScript 作为编程语言的开发人员逐渐切换到 Dart 。 随着 Google 等大公司采用 Flutter,Dart 的流行度大大提高,但它的流行度目前仍然不及 JavaScript。
JavaScript 生态几乎每年都有新 JavaScript 框架涌现,这一点从庞大的 NPM 生态就可见一斑。 依赖现有的包和以前开发人员的成功经验,初学者很容易学习和采用 JavaScript。
同时, JavaScript 是一种快速、轻量级和动态的编程语言,极大的提高开发人员的生产力。 但是频繁的 JavaScript 框架发布,可能对开发者带来困扰,最终对效率产生影响。
Dart 有很多优秀特性,但新手甚至有经验的开发人员都可能会对 Dart 语言的特性感到困惑。 Dart 语法简洁,很大程度上与 Java 相似,因此具有 Java 背景的开发人员可以轻松上手。 然而,Dart 、 Flutter 的社区完善程度远不及 JavaScript。
对于初学者来说,入门 JavaScript 简单,但是深入 JavaScript 还是有一点的难度。不过幸运的是,很多在线课程、教程、视频等资料可助力其快速学习。
相比之下,Dart 对于初学者来说并不友好,因为 Dart 不是一种常用的编程语言,而且在线提供的有关 Dart 的课程、书籍非常有限。 然而,谷歌最近在官网更新了大量关于 Dart 的文档,助力 OOPS 语言生态的程序员轻松掌握 Dart 。
JavaScript 是一种解释型语言,因此可能会给人更轻、更快的感觉。 然而,事实证明当针对 JavaScript (Node.js)和 Dart 进行基准测试时,结果 Dart 要快得多。
而且 Dart 可以同时编译,这有助于以多种方式构建应用程序,因为使用 JIT 编译可以加快开发速度,并且可以在发布过程中使用 AOT 编译以实现更好的优化。 该技术已用于 Flutter 应用程序开发。
JavaScript 最初用于使用 HTML 和 CSS 进行前端 Web 开发。 然而,随着框架、Wasm 的兴起,JavaScript 现在也被广泛用于服务器端和后端开发。
Dart 目前正积极与 Flutter 一起用于开发跨平台移动应用程序的前端。 Dart 也可以用于,但是尚且没有用于后端开发。
JavaScript 主导了不同框架的移动和 Web 应用程序开发。 随着 Facebook 发布 React 和 React Native,JavaScript 成为初创公司和小型企业开发 Web 和移动应用程序的不二选择。 市场上有大量 JavaScript 框架可用于开发 Web 应用程序、渐进式 Web 应用程序和混合移动应用程序等等。
与 JavaScript 类似,Dart 可用于移动和 Web 开发。 Dart 与用于开发跨平台移动应用程序的框架一起流行起来。 Dart 也可以用于开发服务端,但实际上很少用于此目的。不过值得一提的是,Dart 的未来取决于 Flutter 的成功,而 JavaScript 已经成功了!
JavaScript 在大公司中广泛用于开发 Web 和跨平台移动应用程序。 Facebook 是内部使用的 React 和 React Native 框架的先驱,但还有许多其他大公司使用 JavaScript,包括 Instagram、Reddit、eBay、Slack、Airbnb 等。
Dart 诞生于谷歌,所以显然它在谷歌内部使用,但也有一些像阿里巴巴这样的大品牌也采用 Flutter 和 Dart 来开发跨平台移动应用程序。 还有其他一些使用 Dart 的大公司,包括 Blossom、WorkTrails、Whale、Mobile 等等。
不同的开发者可能喜欢不同的编程语言,所以 Dart 、JavaScript 到底谁更好很难得出统一结论。 当然,一定程度上,开发人员选择使用的语言取决于项目需要以及开发人员及其团队的综合实力。但是,我们还是可以从一定程度上对比下这两种语言。
Dart 的优点主要可以概括为以下几个方面:
任何一种语言都有自己的局限性,Dart 的缺点主要包括以下几个点:
以上内容重点概述了 Dart 语言的优点和缺点,接下来一起来看看 JavaScript 的优点。
说到 JavaScript 的优点, 就不得不提到 JavaScript 的缺点,主要可以概括为以下几个点:
了解了 Dart、JavaScript 的优缺点后,接下来带着大家一起聊聊 Dart 是否会替代JavaScript。虽然不同人会有不同的看法,但是我们可以从宏观上进行简单论述。
根据 2015年5月 infoworld 的消息,谷歌在 2015 年就已经否认过 Dart 最终会替换 JavaScript 的论调 。根据 Dart 联合创始人 Lars Bak 和 Kasper Lund 的说法:Dart 专注于编译成 JavaScript,而不是将直接支持 Dart 语言的虚拟机(Dart VM)集成到浏览器中。
但是,这并不意味着 Dart VM 不会继续开发。 相反,这项工作现在将专注于补充 Dart 已经在使用的地方。例如,在 Google Ads 中,一百万行 Dart 代码正在部署中。
1)Dart VM 提供了一个即时编译器 (JIT),具有增量重新编译(启用热重载)、实时指标收集(支持 DevTools)和丰富的调试支持。
2)当应用程序准备好部署到生产环境时,无论是发布到应用程序商店还是部署到生产后端,Dart AOT) 编译器可以编译为原生 ARM 或 x64 机器代码。 AOT 编译的应用程序可以提供一致的、较短的启动时间。
3)AOT 编译的代码在高效的 Dart 运行时中运行,该运行时强制执行健全的 Dart 类型系统并使用快速对象分配和分代垃圾收集器管理内存。
从一开始,Dart 就面临着两种未来。 一方面,Dart 成为浏览器中 JavaScript 的补充,尽管 Dart 似乎不太可能在 Google Chrome 以外的任何浏览器中获得吸引力。 另一方面,正如 Dart 1.0 版发布的博客文章的论述,Dart 更像是一种用于构建 Web 应用程序的服务器端语言,而 JavaScript 通过 Node.js 已经早早实现了这个目标。
虽然谷歌在 Google Cloud 平台中添加了对 Dart 的服务器端支持,但它没有在 Chrome 中提供 Dart VM。 在客户端运行 Dart 的唯一方法是将其编译为 JavaScript(运行速度比原生Dart 慢)或使用包含 Dart VM 的称为 Dartium 的特殊浏览器构建。 谷歌本身似乎不清楚 Chrome 是否会包含 Dart VM。
对于面向移动和桌面设备的应用程序,Dart 包括一个JIT 编译的 Dart VM 和一个用于生成机器代码的 AOT 编译器。
与更流行和广泛部署的 JavaScript 相比,Dart 在 Google 之外也没有太大的影响。 Dart 在2023 年跻身 Tiobe 语言流行指数 28 名,而相比之下,JavaScript 排在第7位,这个流行程度相差不是一点半点。
本文主要和大家介绍下为何 Dart 语言在前端大火,Dart 最终能否替代JavaScript。相信通过本文的阅读,大家对 Dart 会有一个初步的了解。对 Dart 能否在与 JavaScript 的竞争中获胜会有一个自己的判断。
因为篇幅有限,文章并没有过多展开,如果有兴趣,可以在我的主页继续阅读,同时文末的参考资料提供了大量优秀文档以供学习。最后,欢迎大家点赞、评论、转发、收藏!
https://betterprogramming.pub/9-features-i-love-about-the-dart-programming-language-b16d28906e3f
https://dart.dev/guides/language/language-tour
https://dart.dev/language
https://dart.dev/guides/language/effective-dart
https://blog.codemagic.io/dart-vs-javascript/
https://www.javatpoint.com/dart-features
https://www.infoworld.com/article/2902074/google-dart-will-not-replace-in-browser-javascript.html
https://dart.dev/overview