1
主要学习过程:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/1_1_u5e94_u7528_u6a21_u578b-0000001478061441-V2?catalogVersion=V2
了解了鸿蒙开发
学习了开发基础知识
学习了ArkTS语言(开发语言)
学习了ArkUI语言(声明式UI开发框架)
学习由来:
鸿蒙next在11月开始千帆大会后,有大厂开始宣布启动开发。1月已知的高德与小红书已经基本完成。
学习过程:
鸿蒙开发环境基本跟Android studio一样. 然后自己给了ArkTS语言(说是JS的超集,学习过程OK),然后ArkUI(声明式UI,有点参考苹果的swiftui,实时渲染,很好)。 记忆点需记住很多装饰器,就封装好的名称功能很多。
现在能开发做产品了吗?
一般还不行。开发环境都还没出next正式版,现在就大厂与华为去深度合作开发,帮华为一起发现问题与解决问题(开发环境,第三方服务功能等)。例如:支付分享等功能华为都还在开发,需要微信支付宝等厂商一起协作完成。 了解是预计第一季度开发环境正式发布next版本出来。第二季度可能开始全员开发。
为什么要开发鸿蒙?
华为占领市场不少,还有华为后面的pc与车载等应用(都可以同一套适配开发)。 最主要他发了ArkUI-X跨平台框架(目前支持 OpenHarmony、HarmonyOS、Android、iOS),后面有大概率成为跨平台主流。
2
for..of和for..in均可迭代一个列表,但是用于迭代的值却不同:for..in迭代的是对象的键,而for..of则迭代的是对象的值。
装饰器
用来装饰类、结构体、方法以及变量,赋予其特殊的含义,如上述示例中 @Entry 、 @Component 、 @State 都是装饰器。具体而言, @Component 表示这是个自定义组件; @Entry 则表示这是个入口组件; @State 表示组件中的状态变量,此状态变化会引起 UI 变更。
组件状态管理装饰器和@Builder装饰器:
组件状态管理装饰器用来管理组件中的状态,它们分别是:@State、@Prop、@Link。
@State装饰的变量是组件内部的状态数据,当这些状态数据被修改时,将会调用所在组件的build方法进行UI刷新。
@Prop与@State有相同的语义,但初始化方式不同。@Prop装饰的变量必须使用其父组件提供的@State变量进行初始化,允许组件内部修改@Prop变量,但更改不会通知给父组件,即@Prop属于单向数据绑定。
@Link装饰的变量可以和父组件的@State变量建立双向数据绑定,需要注意的是:@Link变量不能在组件内部进行初始化。
@Builder装饰的方法用于定义组件的声明式UI描述,在一个自定义组件内快速生成多个布局内容。
ArkTS提供了@Builder装饰器,来修饰一个函数,快速生成布局内容,从而可以避免重复的UI描述内容。
Column和Row容器的两个属性justifyContent和alignItems。
https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101667360160710997
JS调用Web组件方法
您可以使用registerJavaScriptProxy将Web组件中的JavaScript对象注入到window对象中,这样网页中的JS就可以直接调用该对象了。需要注意的是,要想registerJavaScriptProxy方法生效,须调用refresh方法。下面的示例将ets文件中的对象testObj注入到了window对象中。
第三方库
https://gitee.com/openharmony-tpc/tpc_resource#https://gitee.com/wedatahub/lom_lyrics
https://ohpm.openharmony.cn/#/cn/result?sortedType=LIKES
页面预览 @Entry
组件预览 @Preview
@Component
struct Title {
context: string
build() {
Text(this.context)
}
}
@Preview
@Component //定义组件片段TitlePreview
struct TitlePreview {
build() {
Title({ context: 'MyTitle' }) //在该片段中声明将要预览的组件Title,以及该组件依赖的入参 {context: ’MyTitle’}
}
}
@State:@State装饰的变量拥有其所属组件的状态,可以作为其子组件单向和双向同步的数据源。当其数值改变时,会引起相关组件的渲染刷新。
@Prop:@Prop装饰的变量可以和父组件建立单向同步关系,@Prop装饰的变量是可变的,但修改不会同步回父组件。
@Link:@Link装饰的变量和父组件构建双向同步关系的状态变量,父组件会接受来自@Link装饰的变量的修改的同步,父组件的更新也会同步给@Link装饰的变量。
@Provide/@Consume:@Provide/@Consume装饰的变量用于跨组件层级(多层组件)同步状态变量,可以不需要通过参数命名机制传递,通过alias(别名)或者属性名绑定。
@Observed:@Observed装饰class,需要观察多层嵌套场景的class需要被@Observed装饰。单独使用@Observed没有任何作用,需要和@ObjectLink、@Prop连用。
@ObjectLink:@ObjectLink装饰的变量接收@Observed装饰的class的实例,应用于观察多层嵌套场景,和父组件的数据源构建双向同步。
AppStorage是应用程序中的一个特殊的单例LocalStorage对象,是应用级的数据库,和进程绑定,通过@StorageProp和@StorageLink装饰器可以和组件联动。
AppStorage是应用状态的“中枢”,将需要与组件(UI)交互的数据存入AppStorage,比如持久化数据PersistentStorage和环境变量Environment。UI再通过AppStorage提供的装饰器或者API接口,访问这些数据。
框架还提供了LocalStorage,AppStorage是LocalStorage特殊的单例。LocalStorage是应用程序声明的应用状态的内存“数据库”,通常用于页面级的状态共享,通过@LocalStorageProp和@LocalStorageLink装饰器可以和UI联动。
@Watch用于监听状态变量的变化。
$$运算符:给内置组件提供TS变量的引用,使得TS变量和内置组件的内部状态保持同步。
LocalStorage:页面级UI状态存储,通常用于UIAbility内、页面间的状态共享。
AppStorage:特殊的单例LocalStorage对象,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储;
PersistentStorage:持久化存储UI状态,通常和AppStorage配合使用,选择AppStorage存储的数据写入磁盘,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同;
Environment:应用程序运行的设备的环境参数,环境参数会同步到AppStorage中,可以和AppStorage搭配使用。
和AppStorage不同的是,LocalStorage是页面级的,通常应用于页面内的数据共享。而AppStorage是应用级的全局状态共享,还相当于整个应用的“中枢”,持久化数据PersistentStorage和环境变量Environment都是通过和AppStorage中转,才可以和UI交互。
ArkUI-X跨平台 目前支持 OpenHarmony、HarmonyOS、Android、iOS,后续会逐步增加更多平台支持。
3
PullToRefresh 下拉刷新、上拉加载组件 https://gitee.com/openharmony-sig/PullToRefresh ohpm install @ohos/pulltorefresh
降版本到2.0.1就行了
ohpm install @ohos/pulltorefresh@2.0.1
运行上面的命令后再把project级oh-package.json里的版本号中的“^”字符删掉,然后重新sync就行了
其他的三方库也一样,自己手动降版本就行
axios 基于promise 的网络请求库 https://gitee.com/openharmony-sig/ohos_axios api9 ohpm install @ohos/axios@2.1.0
ImageKnife 图像加载缓存库 https://gitee.com/openharmony-tpc/ImageKnife api9 "@ohos/imageknife": "2.1.1-rc.0"
eftool EfficientTool工具库 https://gitee.com/yunkss/ef-tool ohpm install @yunkss/eftool
DiskLruCache 磁盘缓存库 https://gitee.com/openharmony-sig/ohos_disklrucache ohpm install @ohos/disklrucache
ohos_ijkplayer 基于FFmpeg的视频播放器 https://gitee.com/openharmony-sig/ohos_ijkplayer
开源三方库资源汇总
https://gitee.com/openharmony-tpc/tpc_resource
学习鸿蒙
开发的一些流程(通知,媒体,存储,后台任务,安全,web等的)
整理了开发必备的一些第三方库
问题:next现在还在内测,现在只有大厂在适配。(个人开发者基本不给名额)
还需学习接入华为相关SDK(登录,推送,支付等等)。
第三方库还有一些必备的库欠缺。
4
集入一些第三方库,鸿蒙尝试写点demo(列表与网络请求)
总结下:
逻辑写法方式应该参考了前端js语言,包括网络封装等等。
权限逻辑,系统逻辑等应该参考了Android。
UI方式是声明式的,应该参考了苹果SwiftUI与谷歌Jetpack Compose
坑点:
在网络请求发现,开发环境居然不能请求数据,必须用真机或模拟器(都太卡了)。 preview模式说不行。
开发环境还没优化好。
希望:
央视新闻也启动开发鸿蒙了,希望next开发环境一季度能出来,给出符合开发者遥遥领先的开发体验。
等next出来,马上正式开发吧。。。