1、Dart is All The ThingsDart & FlutterFlutter & Dart录Dart 全平台Dart 的另个亮点展望Dart & FlutterDart 初印象Dart 完全由 Flutter 带起来Dart & Flutter 的版本2011.102013.112018.82018.122019.22019.52019.102019.12Dart发布Dart 1.0 Dart 2.0 Dart 2.1Dart 2.2Dart 2.3Dart 2.6 Dart 2.72017.5Flutter第个版本 个预览版2018.6Flutter2018.122019.2201
2、9.52019.102019.12Flutter 1.0 Flutter 1.2 Flutter 1.5Flutter 1.9 Flutter 1.12Flutter & DartDart 和 Flutter 的发版节奏基本同步Dart 已经和 Flutter 绑定Flutter 为什么选择 Dart ?汉语、英语等影响思考的式影响解决问题的法Flutter语Java、JavaScript编程语为什么?DartFlutter 为什么选择 Dart ?Dart 同时持 AOT 和 JITAOTJIT预先编译Ahead-Of-Time( )实时编译Just-In-Time( )AOT 与 JIT
3、的发展编译型语编译成机器码C+AOT解释型语运在解释器上JavaScriptJavaJITJS RuntimeJavaVirtualMachine半个AOTJITAOT & JIT开发速度 跨平台 性能C+AOT慢中快中中低Java半个AOT & JITJITJavaScriptAOT & JITAOT 性能、跨平台好,但是开发速度慢JIT 开发速度快、跨平台好,但是性能差现代语多采混合编译式以达到 性能、跨平台、开发速度 的最佳结合Dart 就是这样的语,所以 Flutter 选择了 DartAOT & JIT性能跨平台编译成机器码运在 ARM & X64AOTDartHot Reload代
4、码即时效不需要再编译Dart 编译成 Kernel binary运在 Dart VM 上JIT开发速度Dart 是唯个持严格的 AOT 和 JIT 的编程语Flutter & DartFlutter 对 Dart 的影响Flutter 也在 促进 Dart 不断发展Flutter 对 Dart 的影响使 Dart 成为对 UI 最友好的语Dart is a client-optimized languageOptimized for UI写 UI 的流程写 UI获取数据数据与 UI 绑定声明式 UI代码写 UI代码的嵌套表示 UI 的层级命名参数和数组spreadspread operator
5、collection ifcollection forspread operator & collection if & collection for觉得没有?UI 上可以实现简单逻辑实现了 UI 和 Dart 语法完美融合获取数据络磁盘异步操作Future/async/awaitIsolate数据库IsolateDart 的 Isolate 是单线程但是单线程如何实现性能?Isolate 的组成私有内存没有锁的问题 GC较快+个线程+Event LoopIsolateEvent LoopEvent-loopMicrotask queue 内部事件:系统内部Future.microtask外部
6、事件:Event queueI/O gesturedrawingtimersfuturesasyncEvent-loopEvent-loop先运同步代码后运异步代码FutureFuture代表需要延迟计算的对象async/await把异步代码写成同步代码的样,更好理解Isolate & asyncFuture findPrimeCount(int num) async int primeCount = 0;for (int i = 1; i = num; i+) int divideCount = 0;for (int j = 1; j = i; j+) CPU BoundIO Boundif
7、 (i % j = 0) divideCount+;if (divideCount = 2) primeCount+;return primeCount;Isolate & asyncCPU 密集型IsolateasyncIO 密集型数据与UI绑定MVC/MVP/MVVMUI(标记语)数据(平台语)WidgetUI 和 数据直接绑定Widget(Dart)数据(Dart)ViewModelDart 全平台Dart 的另后台PCWEBDart for backendhttp_server持 HTTP 的 dart:io 库异步编程Dart for backend所有端的语致但是,毕竟客户端和后台
8、解决的问题是不样的思路也会差很很有潜,但是实起来会较困难Dart 的另个亮点dart:ffi 与 C 交互import dart:ffi as ffi;typedef hello_world_func = ffi.Void Function();typedef HelloWorld = void Function();final dylib = ffi.DynamicLibrary.open(hello_world.dylib);final HelloWorld hello = dylib.lookupffi.NativeFunction(hello_world).asFunction();为什么需要极致性能?总结声明式 UIspread operator & collection if & collection for异步持:Isolate & EventLoop & Future & async & awaitDart for backenddart:ffi展望2019 Github 语排榜Dart 展望我也法预测未来会怎样但是我建议家都去学新语,如 Dart