[TOC]
flutter
WebView
第三阶段:跨平台,h5作为二阶段的性能瓶颈,RN通过桥梁
完成原生的绘制,以达到更优的性能。
JavaScript通过bridge传递到native完成原生绘制,bridge的成本高,
因为需要频繁的跨桥调用,导致卡顿等性能问题。跨平台的移动ui框架,可以快速在ios和android上构建高质量的原生用户界面。
flutter可以与现状的代码工作。在全世界,flutter正在被越来越多的开发者和
组织使用,并且flutter是完全免费,开源的。- 与现有代码一起工作 (支持混合开发)
- 免费开源
- 跨平台移动ui框架
fuchsia Android IOS
利用dart虚拟机减少了桥的交互
编译型语言,没办法夸平台,但是执行效率很高:
在android过程中编译成android平台的识别的编译语言
在ios过程中编译成ios平台可以识别的编译语言framework(dart)
engine(c++) skia渲染引擎、dart VM等15年的时候flutter的前身 ‘sky’ ,运行在android操作系统上。
一开始是通过浏览器出现的,随着nodejs出现,js又火了起来
flutter beta1版本于2018年2月27日
flutter live 2018年12月5日 正式版出现了
12月27日出来了1.2.2的版本
腾讯,京东,百度,美团
腾讯now直播apk,京东金融apk,咸鱼apk(经常发布flutter文章) 都含有 libflutter.so文件flutter特点
快速开发富有表现力,漂亮的用户界面
内置很多控件,可以在ios和android上面达到相同的效果本地性能: 不能避开 dart的引擎层,已经接近原生
热重载:ctrl + s 就加载布局上来了
debug模式和release模式完全不一样 debug模式:利用websocket来进行更新的text文本
showcase
美团 爱奇艺 携程
编译型语音,运行时语言dart
于其他跨平台框架使用JavaScript作为其他开发语言不同的是,flutter使用是dart.
特点: (jit aot 混合编译的 )
- 给予JIT的快速开发周期 (运行期间,编写出来的, jit在运行)
flutter在开发阶段采用jit模式,这样就避免了每次改动都要进行编译,极大的节省时间; - 给予aot的发布包(代码提前编译成机器码 java9 也加入了aot)
flutter在发布时可以通过aot生成高效的ARM代码以保证应用性能.
为了快速流程的用户体验需要能够在每个动画帧运行大量的代码,不能有周期性的停顿,否则会造成掉帧.
fps 30fps 1s钟切换30次图片
- 单线程: dart是个单线程的语言, isolate机制
不需要锁,不存在数据竞争和变量状态同步,也没有线程 - 垃圾回收 : 新生代,老生代 实现是cms的垃圾回收器
多生代无锁垃圾回收器,专门为UI框架中常见的大量widgets对象创建和销毁优化
- 给予JIT的快速开发周期 (运行期间,编写出来的, jit在运行)
flutter的前景怎么样?为什么你会选择使用flutter?
一开始h5和webview这些效率比较低,看起来界面比较卡顿
性能比RN好, 因为RN中间以js为桥梁,flutter效率比较高
pubspec.yaml 进行导入依赖
flutter中文网 可以看一些demo
flutter解决白屏问题