本文记录于我完整开发完一个鸿蒙App后的学习笔记。

一、通用逻辑

1. 设计App的流程

  • (1)先进行网络和存储接口的设计
  • (2)再进行页面架构的搭建
  • (3)再进行细化

2. 直达客户端应用开发入门的方法

只要你学的是客户端开发,那么就有一个快速的入门经典题目,你搞定了这个题目,那么你所在的新平台的开发已经实现入门了。

因为Flutter是跨平台的,场景更加复杂,所以我们就以Flutter为例,展开描述一下这个题目:

在工程里新增一个半屏 flutter list view,用自动布局实现,
里面还有 icon 是本地,加网络请求,View有对应的Model,
里面的内容是发网络请求获取的,
还有一部分是从 oc 原生代码获取的,还有一部分是从 db 获取的,
然后添加拖拽手势,然后松手之后有一个动画,
然后 A 可以打开 B,A 向 B 传参数,并响应 B 传回来的参数,然后 B 打开的是 C是原生,做的也是类似的事情。

这里面涉及的知识点:
flutter半屏、自动布局、网络请求、数据驱动、桥接原生、DB操作、响应动画、router传参。

二、鸿蒙特有的东西

1. 数据驱动

我认为 @State 是声明式编程的灵魂,无论是鸿蒙还是flutter,都通过@State实现数据的绑定。

  1. 双向绑定

什么时候需要双向绑定呢? 比如多个View都在共享同一个数据源,最常见的就是:

一个List对应一个数组装的数据源,然后List中的操作面板也需要数据源中的信息,那么这时候针对数据源要进行绑定。

@Link @Watch

3. 数据驱动,那理论上都是在操作data,怎么实现删除一个View呢?

这是我认为最好看的结构。

IDataSource 封装的数据源接口,在iOS开发中,如果在使用tableView时,你需要自己实现tableView的delete回调接口,
而IDataSource自动封装了这些能力。

4. 页面架构

  • page
  • view_0
  • view_1
  • model
  • datasource

你可以看到我们这里的工程结构,样式我们使用Page封装View来实现,
然后定义Model和dataSource,当然这里我们没有封装网络层和数据库,
如果封装的话,新增DB和net层比较合理。

5. page之间的跳转

作为iOS开发,page之间传参是我最初非常难接受的。
在Android和鸿蒙中,page或者activity之间的传参,是通过一个单一的params进行传参的,
而要把数据返回给上一个层级时,需要上一个层级自己在onPageShow/aboutToAppear的时候从router中获取数据。