老孟导读:关于 Flutter为什么使用Dart? 这个话题,就像 PHP是世界上最好的语言 一样,争论从来没有停止过,有很多说法,比如: Google是为了推广Dart,Dart是亲儿子。 Flut
-
开发人员的生产力。Flutter的主要价值主张之一是,它可以让开发人员使用相同的代码库为iOS和Android创建应用程序,从而节省了工程资源。使用高效的语言可以进一步加速开发人员,并使Flutter更具吸引力。这对我们的框架团队和开发人员都非常重要。Flutter的大多数语言都是用与我们提供给用户的语言相同的语言构建的,因此我们需要在不牺牲开发人员的框架和小部件的可访问性或可读性的情况下,保持100k的代码行的生产力。
-
面向对象。对于Flutter,我们需要一种适合Flutter问题领域的语言:创建视觉用户体验。该行业拥有数十年使用面向对象语言构建用户界面框架的经验。尽管我们可以使用非面向对象的语言,但这将意味着重新发明轮子来解决一些难题。另外,绝大多数开发人员都有面向对象开发的经验,这使得学习Flutter开发方法变得更加容易。
-
可预测的高性能。借助Flutter,我们希望使开发人员能够创建快速,流畅的用户体验。为了实现这一点,我们需要能够在每个动画帧中运行大量的最终开发人员代码。这意味着我们需要一种既能提供高性能又能提供可预测的性能的语言,而又不会导致帧丢失的定期暂停。
-
快速分配。Flutter框架使用一种功能样式的流程,该流程在很大程度上依赖于基础内存分配器,可以有效地处理短暂的短期分配。此样式是使用具有此属性的语言开发的,在缺少此功能的语言中无法有效工作。
- Dart是AOT(Ahead Of Time)编译的,编译成快速,可预测的本机代码,几乎所有Flutter都可以用Dart编写。这不仅使Flutter更快,而且几乎所有内容(包括所有小部件)都可以自定义。
- Dart还可以通过JIT(Just In Time)进行编译,以实现异常快速的开发周期和改变游戏规则的工作流(包括Flutter亚秒级有状态热重装)。
- Dart使创建以60fps运行的平滑动画和过渡更加容易。Dart可以在没有锁的情况下进行对象分配和垃圾回收。与JavaScript一样,Dart避免了抢先式调度和共享内存(从而避免了锁定)。因为Flutter应用程序已编译为本机代码,所以它们不需要在领域之间建立缓慢的桥梁(例如,JavaScript与本机之间)。它们的启动速度也快得多。
- Dart允许Flutter避免使用像JSX或XML这样的声明式布局语言,也不需要单独的可视化界面构建器,因为Dart的声明式程序化布局易于阅读和可视化。而且,由于所有布局都以一种语言和一种位置显示,因此Flutter可以轻松地提供使布局变得轻松的高级工具。
- 开发人员发现Dart特别易于学习,因为它具有静态和动态语言用户都熟悉的功能。
Center(child:
Column(children: [
Text('Hello,World!'),Icon(Icons.star,color: Colors.green),])
)
return new ListView.builder(itemBuilder: (context,i) {
if (i.isOdd) return new Divider();
// rest of function
});
- C是用于编写操作系统和编译器的系统编程语言。它变得更多了。
- Java是为嵌入式系统设计的语言。
- JavaScript是Web浏览器的脚本语言(!)。
- 甚至备受反对的PHP也成功了,因为它专注于编写“个人主页”(并以此为名)。