偷懒是一种美德。
阿里巴巴技术专家 陈新新 如是说。
《基于 Flutter & Dart 的全栈开发》的学习笔记。
了解到了闲鱼是如何将 Flutter & Dart 应用到前后端一体化开发的,没想到 Flutter 结合 Dart Server 能够实现这么令人惊艳的开发模式!
闲鱼移动端框架演进
- 原生 + H5 + WEEX
- 原生 + Flutter
- 原生性能 - 渲染引擎、AOT、无锁 GC
- 快速开发 - 亚秒级、有状态的热重载
- 统一的应用开发体验 - 两端一致的开发方式,Material 和 Cupertino
Flutter 快速开发
- Hot Reload
Flutter 在闲鱼应用过程
- 2个人3个月,做出闲鱼国际版本
- 接近 Native 的效果
- 关键问题解决
- 混合开发:工程管理和混合栈管理
- Flutter 产物引入原生项目
- 外接纹理播放视频
- 图片缓存优化
- 无反射 JSON 序列化
- 私有 PUB 库、阿里生态适配
- 混合开发:工程管理和混合栈管理
- Flutter 两端统一开发,提高效率
- 协议定义
- 接口实现
- 一个人开发三端
- 不一样的开发和思维方式
- 部署运维让客户端开发人员觉得很复杂
- 增加很多工作量
- 胶水层 - Dart 实现
- 胶水层多变,领域层少改
- 详情页所有流量由 Dart Server 服务
- 运行时长 - 长时间运行稳定
- RT
- 单机 QPS
- 让 Flutter 同学快速上手服务端
- All in IDE - 制作了很多 IDE 插件
- 新建服务
- 快速部署
- 本地执行
- 隔离调试
- 日志回传
- 错误定位
- 服务集合
- 领域服务
- 代码转换 - Java 转 Dart 工具
- 服务索引 - 文档索引
- 简化运维
- 监控
- 告警
- 开关
- 降级
- 限流
- All in IDE - 制作了很多 IDE 插件
- 秒级部署 - Dart Isolate
- 无需代码提交
- 运行时隔离
- 远程热部署
- 本地测试
- 本地调用远程服务 - http
- 单次请求所有日志回传 - Dart Zone
- 无冲突调试 - Isolate 隔离
- Isolate 加载每个人的代码
- 只调试指定 Isolate
三端一体化新开发模式
- 数据模型 - 前后端一致
- 业务逻辑 - 分拆实现
- 视图 - 统一两端 UI
- 协议 - 前后端协议用工具生成一套
- 全链路日志
- 一体化开发的好处
- 开发灵活,扩展性好,降低沟通成本
- 协议三端一致,提高性能和效率
- 一体化开发,全链路日志和调试
- 服务端更专注领域服务的通用性和性能
未来和研发自动化的结合
- 研发自动化
- UI2Code - UI 生成代码
- Flutter 代码生成
- Data Bind - 生成协议
- 即将开源
- Dart Server Framework
- Dart Server IDE Plugins