Part1 移动端开发闲聊
原生:iOS、Android
跨平台:H5、小程序、React Native、Weex、Flutter
[图片上传中...(image.png-6a946a-1584728464816-0)]
原生开发:就聊聊 iOS 吧(Android 不熟 😅)。OC 这个语种,当年刚接触的时候真的各种不习惯,给人的第一感觉就是很奇葩,用起来很别扭,但自己又特别喜欢苹果的产品😓,好在苹果现在一直在推 Swift ,当年也是很感兴趣 2.0 就入了坑,经历了一次 Swift 版本升级之后果断弃坑了,不过现在应该好很多,很多公司的招聘要求也是需要懂 Swift,但是在接触了像 React 这种响应式 UI 开发后,现在偶尔去 OC 这种命令式开发,着实有些难受...
跨平台开发:之前有接触过 RN,Hot Reload (JIT 是绝对要吹一波的),对于 UI 开发效率的提升简直是飞跃,React 的 Diff 算法也是令人拍案叫绝,但是 RN 最终是需要通过 JSCore 转为原生,所以理论上讲,运行效率是不如原生的,且由于需要依赖原生,不同平台控件需要单独维护,系统更新后,社区控件多数情况下是滞后的。
Part2 今天的主题 Flutter 闲聊
先来感受下几个跨平台技术的星星情况(2019年12月07日)
Flutter 作为一个后起技术,仅从 GitHub 的反响来看,是相当不错的。
其次 Flutter 选择的 Dart 这门语言借鉴了很多前端开发的优秀思想,比如 React 的响应式 UI 框架设计思想,async、await 像同步编程那样异步编程等。Flutter使用 Skia 作为其 2D 渲染引擎(Skia 是跨平台的,并提供了非常友好的 API,目前 Google Chrome 和 Android 均采用 Skia 作为其绘图引擎),理论上渲染效率要高于 RN。而且同时支持 AOT 与 JIT,开发时 JIT 可以高效开发、发布运行时 AOT 可以高效运行(这个可以大吹一波了😜)
Part3 近期 Flutter 开发感受
- 一切皆对象:null、int 这些都属于对象
- 一切皆 Widget:连布局都是 Widget(像 H5 、RN 等都是分离开的,这个刚开始还是有些不习惯...)
Part3.1 Dart 语言小结(比较跳跃...):
Dart 没有 public、private、protected 这些关键字,变量名以 _ 打头意味着它的 lib 是私有的
类即接口,可以继承一个类也可以实现一个类
尽量给变量一个确定的类型
没有初始化的变量,初始值默认都为 null
const 是编译时常量
final const 修饰的变量建议指定数据类型
常量如果是类级别的,使用 static const
和 c、oc 一样,有断言 assert
List 里边的元素必须保持类型一致,同 java
Map 的 key 类型也需要保持一致,key 不可以相同
级联符号 .. 允许在同一个对象上进行一系列操作
使用 { } 指定命名参数,同 OC 命名参数
使用 [ ] 来标记可选位置参数
Part4 Flutter 学习资料整理
混合开发官方集成方案:https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps#ios
中文网:(环境配置、SDK介绍等)https://flutterchina.club/get-started/install/
Dart 在线练习:https://dartpad.cn/
Flutter 布局详解(写的很好)https://github.com/yang7229693/flutter-study
Widget 生命周期
https://juejin.im/post/5d8c8fbaf265da5b9e0d2eb6
- 异步async、await和Future的使用技巧
https://segmentfault.com/a/1190000014396421
Part5 IDE 推荐
刚开始玩 Flutter 时官网推荐了 Android Studio 和 VSCode 两款 IDE ,我先用了前者,因为现在做的是混合开发,需要同时开启 Xcode 与 Android Studio ,由于鄙人电脑配置不是很好,那“欢乐小菊花”转起来有时候真让人崩溃,后面就尝试了后者 VSCode,不得不再吹一波,这个 IDE 是真真儿强大,插件库丰富,打开速度很快,偏好设置直接设置 json (settings.json 文件) 就行
分享下我在使用的插件及配置
{
// 主题
"workbench.colorTheme": "Default Light+",
// 控制何时自动保存已更新文件。接受的值: "off"、"afterDelay"、"onFocusChange" (编辑器失去焦点)、"onWindowChange" (窗口失去焦点)。如果设置为 "afterDelay",可在 "files.autoSaveDelay" 中配置延迟时间。
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 3000,
// 保存的时候自动格式化
"editor.formatOnSave": true,
"dart.openDevTools": "flutter",
// vscode-fileheader 插件配置
"fileheader.Author": "shaolin",
"fileheader.LastModifiedBy": "shaolin",
"workbench.iconTheme": "vscode-icons"
}
Part6 摘自官网一段作为结束语,挺振奋人心的😀😀😀
希望会给大家带来帮助 O(∩_∩)O