当前位置:网站首页>Flutter技术与实战(1)
Flutter技术与实战(1)
2022-06-29 15:48:00 【八归少年】
课前必读
为什么每一位大前端从业者都应该学习Flutter
- Flutter开辟了全新的思路,提供了一整套从底层渲染逻辑到上层开发语言的完整解决方案:视图渲染完全闭环在其框架内部,不依赖于底层操作系统提供的任何组件,从根本上保证了视图渲染在 Android 和 iOS 上的高度一致性;Flutter 的开发语言 Dart,是 Google 专门为(大)前端开发量身打造的专属语言,借助于先进的工具链和编译器,成为了少数同时支持 JIT 和 AOT 的语言之一,开发期调试效率高,发布期运行速度快、执行性能好,在代码执行效率上可以媲美原生 App。而这与 React Native 所用的只能解释执行的 JavaScript,又拉开了性能差距。
从0开始搭建Flutter工程环境
下载Flutter
配置环境变量
Dart语言概览
Dart是什么
- 2011 年 10 月,在丹麦召开的 GOTO 大会上,Google 发布了一种新的编程语言 Dart。如同 Kotlin 和 Swift 的出现,分别是为了解决 Java 和 Objective-C 在编写应用程序的一些实际问题一样,Dart 的诞生正是要解决 JavaScript 存在的、在语言本质上无法改进的缺陷。
- Dart 的诞生正是要解决 JavaScript 存在的。JavaScript 实际上是两类编程语言(C语言和Java语言)风格的混合产物:(简化的)函数式编程风格,与(简化的)面向对象编程风格。
- Atwood 定律:凡是能用 JavaScript 写出来的系统,最终都会用 JavaScript 写出来(Any application that can be written in JavaScript, will eventually be written in JavaScript.)。
- Google 未来的操作系统 Fuchsia 中,Dart 更是被指定为官方的开发语言。
Dart特性
- JIT和AOT
- 借助于先进的工具链和编译器,Dart 是少数同时支持 JIT(Just In Time,即时编译)和 AOT(Ahead of Time,运行前编译)的语言之一。
- JIT 在运行时即时编译,在开发周期中使用,可以动态下发和执行代码,开发测试效率高,但运行速度和执行性能则会因为运行时即时编译受到影响。AOT 即提前编译,可以生成被直接执行的二进制代码,运行速度快、执行性能表现好,但每次执行前都需要提前编译,开发测试效率低。
- 看代码在执行前是否需要编译即可。如果需要编译,通常属于 AOT;如果不需要,则属于 JIT。AOT 的典型代表是 C/C++,它们必须在执行前编译成机器码;而 JIT 的代表,则包括了如 JavaScript、Python 等几乎所有的脚本语言。
- 内存分配和垃圾回收
- Dart VM 的内存分配策略比较简单,创建对象时只需要在堆上移动指针,内存增长始终是线性的,省去了查找可用内存的过程。
- 在 Dart 中,并发是通过 Isolate 实现的。Isolate 是类似于线程但不共享内存,独立运行的 worker。这样的机制,就可以让 Dart 实现无锁的快速分配。
- Dart 的垃圾回收,则是采用了多生代算法。新生代在回收内存时采用“半空间”机制,触发垃圾回收时,Dart 会将当前半空间中的“活跃”对象拷贝到备用空间,然后整体释放当前空间的所有内存。回收过程中,Dart 只需要操作少量的“活跃”对象,没有引用的大量“死亡”对象则被忽略,这样的回收机制很适合 Flutter 框架中大量 Widget 销毁重建的场景。单线程模型。
- 单线程模型
- 它天然不存在资源竞争和状态同步的问题。这就意味着,一旦某个函数开始执行,就将执行到这个函数结束,而不会被其他 Dart 代码打断。
- Dart 中并没有线程,只有 Isolate(隔离区)。Isolates 之间不会共享内存,就像几个运行在不同进程中的 worker,通过事件循环(Event Looper)在事件队列(Event Queue)上传递消息通信。
- 无需单独的声明式布局语言
边栏推荐
- 面试官:说一下MySQL事务隔离级别?
- mysql数据库基础:数据类型介绍
- STM32与GD32笔记
- Alipay "security lock" was selected as an excellent case in the "child care program" of the ICT Institute: more than 330000 users have opened game protection
- It is expected to significantly improve the computational performance of integrated photonic circuits. The Tsinghua team proposed a diffraction pattern neural network framework
- leetcode:139. 单词拆分【dfs + memory】
- 支付宝“安全锁”入选信通院“护童计划”优秀案例:超过33万用户已开通游戏保护
- 天谋科技 Timecho 完成近亿元人民币天使轮融资,围绕 Apache IoTDB 打造工业物联网原生时序数据库
- Digital tracking analysis of insurance services in the first quarter of 2022
- 如何在 WordPress 中创建登录页面
猜你喜欢

事件相关电位ERP的皮层溯源分析

天谋科技 Timecho 完成近亿元人民币天使轮融资,围绕 Apache IoTDB 打造工业物联网原生时序数据库
![leetcode:42. Rain water [double hands are elegant]](/img/8c/41f4a9c7176ff47327e79b688e2c55.png)
leetcode:42. Rain water [double hands are elegant]

有望显著提高集成光子电路的计算性能,清华团队提出了一种衍射图神经网络框架

golang操作NSQ分布式消息队列

路由汇总带来的三层环路-解决实验

STM32与GD32笔记

MATLAB给数据加噪声/扰动

Tutorial | fNIRS data processing toolkit homer2 download and installation

自学编程能看得懂代码,但是自己写不出来怎么办
随机推荐
【Proteus仿真】数码管递加/递减带闪烁消隐显示
【Try to Hack】XML
工具链赋能百家,地平线开启智能驾驶量产的“马太效应”
A. Print a Pedestal (Codeforces logo?)
Sophon CE社区版上线,免费Get轻量易用、高效智能的数据分析工具
加速智能驾驶项目落地?你还缺一套真值测评系统
The third sprint of Wei long La Tiao: the growth rate of performance declined, and Liu Weiping and Liu Fuping cashed out in advance
蓝桥杯2015年CA省赛(填坑中)
C语言——printf打印进制前缀
Differences between virtual hosts, WordPress hosts and virtual hosts
mysql报错:Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column
防范企业数据泄露,就用网络安全产品堡垒机!
如何在你的 wordpress 网站中添加搜索框
golang gopsutil库的使用:进程和系统资源监控(CPU 内存 磁盘等)
wallys/m.2/Adapter card(one pcie1x to 4 x Mini PCIE)
Blue bridge cup several full array questions
How to add a search box to your WordPress site
It is expected to significantly improve the computational performance of integrated photonic circuits. The Tsinghua team proposed a diffraction pattern neural network framework
C. Where‘s the Bishop?
Mysql database foundation: DDL data definition language