Flutter开发者入门10个知识点:框架使用什么编程范式?

2019-04-0122:21:51APP与小程序开发Comments2,982 views字数 2221阅读模式
Flutter开发者入门10个知识点:框架使用什么编程范式?
  1. Flutter 和 ReactNative( RN ) 的异同?
    1. RN 是使用JS代码调用系统的原生控件,最高支持 60fps。 Flutter 不使用系统的原生控件, Flutter 基于GPU渲染,所以确保了 高性能,最高支持120fps,甚至不输原生。
    2. Flutter只需要维护一套UI 代码:Flutter 在IOS和Android 是一套 UI 风格组件,所以 Flutter 需要做很少适配,因为上层只有一套UI代码。RN是同一套代码在IOS和Android显示不同的风格,需要适配维护两个代码库。
    3. 相同点: 和RN类似,基于组件开发Widget,一切皆组件
  2. 谁创造了Flutter?
    Flutter是一个开源项目。目前,大部分的开发工作都是由Google的工程师完成的。现在越来越多的社区开发者加入。
  3. Flutter引擎有多大?
    官方曾测量了一个最小的 Flutter 应用(不含 Material 组件,仅有一个 Center 控件,使用 flutter build apk 构建),并打包为 release 版本,大小约为 4.06 MB。该APP:核心引擎大约为 2.7MB(已压缩),框架和应用程序代码大约 820.6KB (已压缩),LICENSE 文件为 53.5KB(已压缩),必要的 Java 代码 (classes.dex) 为 61.8KB(已压缩),此外还有大约 450.4KB(已压缩)的 ICU 数据。
    因此相对应用程序,Flutter的引擎并不大。
  4. Flutter可以构建桌面应用程序吗?
    可以,但目前专注于移动端优先。未来会支持 WIndows , Mac 和 Linux。
  5. Flutter的标记语言在哪里?为什么Flutter没有标记语法(类似于Android的XML布局文件)?
    和Android原生开发不同,使用代码动态构建的UI会更灵活:
    1. 严格的标记系统难以表达和生成具有特定行为的widget。
    2. “代码优先”更好地支持热重载和动态环境适应等功能。
  6. 可以在Flutter中使用JSON 吗?
    必须可以,有关如何在Flutter中使用JSON的教程,请参阅 JSON教程
  7. Flutter支持和原生混合开发么?可以在当前原生APP中嵌入Flutter么?
    可以,目前可以在现有的Android或iOS应用中嵌入Flutter,但是当前可能不太完善。 这里是官方文档以供参考。
  8. 为什么Flutter选择使用Dart语言?
    1. Dart运行时和编译器支持Flutter的混合编译
      1. 基于JIT的快速开发周期:允许使用类型的语言进行形状更改和有状态的热重载
      2. 基于AOT编译器,可生成高效的ARM代码,可以快速启动并拥有可预测的生产部署性能。
    2. Dart由谷歌维护,Dart社区正在积极投入资源改进Dart在Flutter中的使用。
    3. Dart语言效率高,这点最重要!!!,这对framework团队和开发人员都非常重要。因为大部分Flutter功能都是用Dart实现,因此我们需要在10万行代码时能保持高效的而不会牺牲framework和widget的可读性。
    4. Dart面向对象。绝大多数开发人员都具有面向对象开发的经验,因此更容易学习如何使用Flutter进行开发。
    5. Dart可预测,高性能。 Flutter框架使用函数式流,它很大程度上依赖于底层的内 存分配器,从而有效地处理小的、短期的内存分配会非常重要,所以在缺 乏此功能的语言中Flutter无法有效地工作。
  9. Flutter是什么语言编写的?
    Flutter的不同是因为它核心只有一层轻量的C/C++代码。Flutter在Dart中实现了其它大部分系统(组合、手势、动画、框架、widget等),开发人员可以轻松地进行读取、更改、替换或移除。这为开发人员提供了对系统的巨大可定制性。
    知识点分享flutter架构
  10. Flutter框架使用什么编程范式?
    Flutter是一个多范式编程环境。 集合了过去十多年优秀的开发范式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11117.html
    1. 组合:Flutter使用的主要范例是使用小对象,然后将它们组合在一起以获得更复杂的对象。比如Widget之间的相互嵌套。
    2. 函数式编程:整个应用程序可以仅使用StatelessWidget来构建 ,这些函数本质上是描述参数如何映射到其他函数的函数。
    3. 事件驱动:用户交互由事件对象表示,这些事件对象被分派给注册了事件处理程序的回调。屏幕刷新也由类似的回调机制触发。
    4. 基于类的面向对象编程:框架的大部分API都是使用继承类来构建的。我们使用一种方法来在基类中定义非常抽象的API,然后在子类中迭代地对它们进行定制化。
    5. 命令式编程:直接命令式编程通常与对象内部封装的状态配对,用于提供最直观的解决方案。
    6. 响应式编程:widget 和元素树有时被描述为响应式的,因为在 widget 的构造函数中提供的新输入会立即作为 widget 的构建方法对较低级别 widget 的更改传播,并在较低 widget 中进行更改(例如,作为响应到用户输入)通过事件处理程序传播回widget树。
    7. 泛型:泛型检测可用于帮助开发人员及早发现编程错误。Flutter框架使用泛型编程来处理这个问题。
    8. 并发:Flutter大量使用异步API。例如,动画系统通过Future来完成动画完成时的通知。图像加载系统同样使用Future在加载完成时进行报告。
    9. 约束:Flutter中的布局系统使用弱形式的约束编程来确定布局的几何形状。约束(例如,父控件将大小约束传给子控件)满足这些限制。通过使用这种技术,Flutter可以更加精准的控制布局。

作者:齐泽威
来源:掘金文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11117.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/xcx/11117.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定