老司机学鸿蒙开发

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出来,马上正式开发吧。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容