请问Flutter与swiftui有什么不同?
网友回复
Swift 和 Dart 分别作为SwiftUI及Flutter两个框架的唯一官方语言,在语法层面的差别其实非常小,网上也有大量的文章来对比这两种语言的优劣性。我的使用体验和大部分人相似,就目前而言,Swift 和 Dart 各有优劣。
Swift 比 Dart 更加简洁。Swift 本身在语法层面已经比 Dart 要简洁很多,比如无需在句末添加;分号等。这一点在直接编写 SwiftUI 和 Flutter 上会显得尤为明显。不过这个问题并不全是语言层面带来的问题,也跟这两个 UI 框架的设计有关。 Swift 比 Dart 更加严格,从某种角度上讲会更加安全,当然安全这种事情追根揭底还是得靠人。 Swift 在发布的第5个年头竟然还没有 await/async ,虽然早有提案但一直没有落实下来。不过 Dart 这边也没有可选型。只能说两者互相吸收的还不够。 Dart 的黑科技:同时支持 AOT 和 JIT,这也赋予了 Flutter Web 级的热重载特性,是 Flutter 对决 SwiftUI 的有力武器。 Swift 和 Dart 都是开源语言。Apple 对 Swift 的开放是史无前例的,目前 Swift 已经可以脱离 macOS 运行,同时在社区中也出现了诸如后端框架 Vapor 等一系列有意思的东西,更是成为了 Tensorflow 的官方语言之一。这一切大大拓展了 Swift 的使用场景。不过,Dart 在可玩性上明显走的要比 Swift 更快。 用其开发的后端框架已经被一些公司投入到了生产环境,Google 的 Web 框架 AngularDart(非 Flutter Web)也早已在一些服务上稳定运行了许久。更不用说借助 Flutter 跑遍 iOS Android macOS Windows Web,简直可以用所向睥睨来形容。 一个语言的设计好坏的确会影响一个框架的受欢迎程度,我已经听过无数 Flutter 开发人员吐槽 Dark 无止境的嵌套问题。虽然 Dark 的可玩度更高,但就单 UI 框架而言, 我个人认为 Swift 的使用感受要明显好于 Dart。
我们从以下几个方面来对比一下flutter及swfitui 一、语法 SwiftUI 和 Flutter 都无一例外的使用了声明式语法和各自的 DSL 来描述 UI ,它的好处是,你能一眼就从代码的结构中看出实际 UI 的结构,并且避免反复的逻辑代码。SwiftUI 用数据绑定和状态管理替代了原有的复杂控制逻辑,而 DSL 又使得代码在结构上和 UI 的层级结构高度一致。
Flutter 要比 SwiftUI 复杂太多了
为什么同样是声明式语法,Fluter 要比 SwiftUI 复杂这么多呢。这其实体现了 Apple 和 Google 在设计这两个 UI 框架时的不同思路,甚至代表了这两家公司的不同文化。对 iOS 和 Android 稍有了解的开发者都知道,iOS 开发要比 Android 开发轻松很多。单就配置开发环境来说,iOS 就可以比 Android 提早1天开始写代码。更不容说复杂的框架、混乱的平台兼容性、生涩难懂的文档。 Apple 对待开发者,就像是在对待新手一样,极尽所能的去简化开发过程,减少开发中的工作量,甚至还要让开发变成一件优雅的事情,这从 Xcode 的外观功能设计到系统 API 再到 Swift 语言都是如此。而 Google 在对待开发者时,更像是对待极客一样,将大量的工作和创作交给开发人员,让它们自由的创造有意思的东西。但相应的,它的门槛也很高,而且自由带来的碎片化和不可控性也会导致开发效率的降低。 在设计 SwiftUI 的 API 时,Apple 隐藏了大量的内部细节,让开发者调用尽可能少的代码就能实现相应的效果。开发者不需要重写初始化方法,不需要使用 return,不需要要关心 context 上下文,也不需要关心它应该是一个 StatefulWidget 还是 StatelessWidget, 更不需要关心用的是 Material Design 还是 iOS Style。能做的 Apple 都帮你在内部做好了,你需要做的,只是告诉编译器,你需要什么控件,它们是什么样的,它们应该在什么地方,仅此而已。如果说 Flutter 给移动开发带来的声明式语法让所有人眼前一亮的话,那么 SwiftUI 的出现则是告诉所有人(包括 Flutter ),什么才是真正的声明式语法。 二、实时更新 SwiftUI 最为重磅的功能,就是万众期待的热加载,也就是实时更新。Web 端超高的开发效率一直是移动端梦寐以求的技能,RN 的出现让所有移动开发者第一次看到了这种可能,虽然它如今也有着自己的问题。F...
点击查看剩余70%