[译] 为什么你需要关注一下 Flutter

谁是 Flutter 的目标用户
  • 希望打造高性能用户界面的开发者。
  • 不想学习各种原生平台语言但希望进入移动应用程序开发层的 Web 应用开发者。
  • 希望通过一次开发吸引更多用户的公司。
  • 希望应用程序设计与他们愿景一致的设计师。
历史

原生应用程序开发与跨平台开发始终有明显区别,有着各种优点和缺点。

跨平台应用的确非常有吸引力。尽管如此,它仍然在不断变化,最终填补了原生应用程序开发空间的空白。一般来说,移动开发也比较年轻(不到十年)。

这篇文章 详细介绍了移动开发中使用的视图技术的历史。

第一个跨平台框架使用了 Web 技术并显示 Web 视图

在 Apple 发布 iOS SDK 之前,他们鼓励第三方开发人员为 iPhone 搭建 web 应用,因此用 Web 技术搭建跨平台应用是一个明显的阶段。

响应式编程 是一种强调异步数据流与事件数据流的编程范式。在动画和其他渲染要求方面,它已经越来越多地被用于用户界面开发。

像 ReactJS 这样的响应式 Web 框架使用响应式编程技术来简化 Web 视图的构建。

根据编译机制和视图类型进行技术分类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“桥”

传统上,构建跨平台应用会因为在不同领域运行而面临性能损失。应用程序是用 JavaScript 开发但界面是完全原生的。不同领域的变量不能互相访问。不同领域的变量和数据交互都必须通过“桥”来完成。

例如,如果你在 Chrome 中调试 React Native 应用,这就意味着程序将在两个不同的领域运行(桌面和移动)。而这些领域通过 WebSocket 连接起来。

React Native 的优化尝试在运行时通过“桥”将数据交换保持在最低值。最终,每个环境下的运行都很流畅但跨桥的交换的延迟会增大。

Flutter 依赖 Dart 语言的静态编译解决这个问题。这意味着在运行时不再需要“桥”,因为程序会被编译成原生代码。

组件

窗口组件是控制和影响应用程序的视图和界面的元素。Flutter 中万物皆组件。这使它更加自包含,可重用和可扩展。

布局

传统的布局依靠的是不同 CSS 文件中定义的多项样式规则。这些规则适用于标记,因此能够为所应用的规则创造多种可能的交互和矛盾。CSS3 有大约 375 项规则。不考虑规则中可能存在的矛盾,布局的可能性通常为 N 阶平方。

Flutter 重新设计的布局更高效也更直观。布局信息由组件在建模时单独指定。这不仅使查看代码的开发者更容易理解正在发生的事,而且还意味着窗口组件没有处理可能不适用于它的规则的开销。

Flutter 团队提供了很多他们觉得用起来不错的布局组件。Flutter 也有很多围绕布局的优化,像为了只在有必要生成大体积组件时的缓存。

Dart

Flutter 团队使用 Dart 有以下几个原因:

  • 静态编译 Dart 是静态编译的。Dart VM 可以为你正在开发的平台构建本机 ARM 代码。这意味着与使用即时编译器,在程序执行时编译的应用程序相比,程序要快得多。
  • 动态编译: Dart 也可以即时编译。Flutter 利用这种开发能力来缩短开发周期。像热重载这样的功能是可行的,因为应用程序可以轻松编译更新,从而更容易测试和迭代产品。
  • 强类型: Dart 是一种 强类型 语言。如果你用过 Java 或 C#,有几个原因使得过渡到 Dart 非常理想,其中一个就是是,Dart 看起来比较熟悉,以及它的类型安全,所以你不必牺牲程序的完整性。
  • 服务端的潜力: Dart 非常适合很多事情,包括在服务器上运行。服务器端的 Dart 越来越受人们关注。考虑到统一代码库的可能性,在 Flutter 中使用它就是一个很好的例子。

你可以从 这里 了解更多关于 Flutter 上使用的 Dart 语言。

Flutter 的结构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Flutter 应用的结构

在 Fuchsia 上的潜力

能够在 Fuchsia 上使用。Fuchsia 是一个新的 开源 操作系统,现在由谷歌开发,这在科技爱好者圈子引起了不少的关注。不像 Android 和其他流行的操作系统,它基于一个叫做“Zircon”的微内核。Flutter 已经和 Armadillo 一起用来测试 Fuchsia 用户界面 的开发了。

目前的不足之处

现在能感觉出的缺点是基于过去的开发者经验。这部分只用于突出 Flutter 项目的重要性和解决方案。证明了 Flutter 团队的发展速度。

你可以查看本文,以了解原生移动开发者在测试驾驶 Flutter 时面临的挑战。他们强调的一些问题在我看来非常有争议,比如缺乏 OpenGL 支持,允许 Flutter 使用 Skia,支持 OpenGL 作为其后端之一。

由于 Flutter 处于刚发布不久,其他你可能面临的可能的挑战包括:

  • 动画的低级实现。这在过去对于一些需要降低水平以创作想要的动画的人来说就是一种挑战。
  • 仍然缺少数据操作库。Flutter 一开始专注视觉渲染。如果你是一个非常依赖现成的社区模块和组件来实现的人,那么你可能会因为稀缺的数据操作库而艰难前行。然而,我个人觉得这个领域正在稳步成熟,Flutter 提供了很多关于构建应用程序的建议,并为人们构建库以使其产品与最佳约定保持一致铺平了道路。
Flutter 入门

前往 Flutter.io 了解怎样入门 Flutter 。你还也查看底部参考资料部分中的内容。

总结

本文讲解了我对Android开发现状的一些看法,也许有些人会觉得我的观点不对,但我认为没有绝对的对与错,一切交给时间去证明吧!愿与各位坚守的同胞们互相学习,共同进步!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
droid学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!**

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值