为什么颤动使用飞镖?

kha*_*min 1 dart flutter

我知道可能有很多原因,但是当开发人员社区已经采用ES6并且正在努力使其变得更好时,为什么选择dart而不是JS?

是否有什么特别的东西让飞镖非常适合Flutter?

Gün*_*uer 7

这是一个FAQ,已经得到了广泛的回答

我不确定你为什么写ES6和"dart js".

Flutter与JavaScript无关.
虽然Dart可以编译为JavaScript,但Flutter不使用此功能.

对于Flutter Dart,编译为本机二进制代码.

  • 并且一个巨大的好处是Dart语言可以改变以改善颤动. (2认同)

atr*_*eon 5

在被几个同事问到这个问题后,我做了一些研究,并认为总结我所阅读和思考的内容会有所帮助(这对我的同事来说是一个非常重要的问题)

Flutter 的语言要求

  • AOT 和 JIT 编译用于快速重新加载和快速发布代码
  • 一个很好的垃圾收集器,可以在创建和销毁许多对象后进行清理
  • 单线程以避免锁和因此卡顿
  • 一个 arm 编译器,以避免让另一个引擎在设备上运行代码(又名 React Native)

Dart 满足所有这些要求。除了 AOT 和 JIT 编译器部分之外,JS(我认为)也非常接近上述所有内容。

Flutter 为何不选择 JS 构建 JIT 和 AOT 编译器?(最初他们确实选择了 JS,但后来改用了)我可以猜到以下几点......

  • Dart 从一开始就考虑到二进制编译
  • Dart 已经有一个转二进制的 JIT 编译器,它后来添加了 AOT 编译器
  • Dart 更加结构化和简单(它是类型安全的并且没有 eval)
  • JS 可以实现可能危及 Flutter 开发的新语言特性
  • Dart 可以针对 Flutter 进行优化,无需担心 JS 的其他用途
  • 历史上新 JS 功能的等待时间很长(过去 3 年更好)
  • Dart 和 Flutter 团队可以紧密合作

综上所述,我可以想象 JS 解决方案可能会发生,但它可能成本高昂且是一个更复杂的解决方案。Dart 非常好,Dart2 确实改进了固有的类型安全性。