做鸿蒙开发久了会发现一个规律:真正让你加班到凌晨两点的,往往不是什么高深架构,而是文档里用一行小字带过、但踩中了就是 P0 的那些边角知识。它们散落在 Stage 模型时序、线程模型、资源访问、权限边界里,单个看毫不起眼,组合起来就是"为什么我这跑得好好的,他那边直接崩"。
做 HarmonyOS 开发的日子久了,你会发现最让人上瘾的不是把 UI 写得多么炫,而是用几行代码把隔壁设备的屏幕变成自己应用的延伸。今天咱们就来一个"小而美"的实战——把手机上选中的图片,一键投送到平板或智慧屏上打开,全程基于分布式能力与 Stage 模型。
上一篇文章我们聊了Navigation容器,它负责管理整个导航栈。但真正承载页面内容的是NavDestination——你可以把它理解成"页面壳子"。
HarmonyOS 开发中的页面路由与转场动画一、背景传统页面导航是怎么做的?每个页面一个组件,然后用router.push()跳转,router.back()返回。看起来挺简单,但问题来了:转场动画不统一:每个页面自己处理,有的淡入淡出,有的滑动,风格混乱导航栏重复:每个页面都要写一遍标题栏、返回按钮、右侧操作区路由状态分散:页...
你肯定遇到过这种场景:同一个页面,手机上要单列显示,平板上要双列,折叠屏展开后要三列甚至四列。传统做法是什么?写三套布局,然后根据屏幕宽度判断显示哪套?
说起相对定位,你脑海里浮现的是什么?是不是CSS里的position: relative配合top/left/right/bottom?或者ArkUI里的position绝对定位?
你有没有遇到过这种场景:一个横向排列的容器里,三个子元素宽度加起来明明只有200vp,但容器宽度有400vp,结果右边空出一大截空白?或者反过来,子元素总宽度超过容器,内容被挤压变形?
HarmonyOS 开发中常见组件单元测试📌 核心要点:掌握Hypium测试框架,学会组件测试技巧,理解mock与stub的应用,构建可靠的测试体系一、小小逻辑点说实话,很多开发者对单元测试的态度是"知道很重要,但就是不写"。原因无非这几个:觉得写测试比写代码还费时间不知道怎么测UI组件测试经常因为各种原因失败,最后干脆删了...
HarmonyOS PC组件化架构设计:从单一组件到组件树一、背景刚开始学HarmonyOS开发的时候,我们写的都是单文件组件——一个@Entry组件搞定一切。这没问题,简单直接,适合学习和原型开发。但随着项目规模增长,这种"一锅端"的方式就开始暴露问题了:几千行的组件代码,改一处怕影响其他地方团队协作困难,多人修改同一个文件...
自定义组件HarmonyOS 开发实践📌 核心要点哦:掌握组件设计的核心原则,识别并避免常见反模式,写出可维护、高性能的自定义组件一、背景写一个自定义组件不难,但写一个"好"的自定义组件——这就有点讲究了。什么是"好"的组件?我觉得至少得满足这几个条件:可复用:换个场景也能用,不用改代码可维护:半年后自己还能看懂...
HarmonyOS 开发中的RecursiveDelete与组件销毁:内存管理实战一、说说看说到组件销毁,很多开发者可能觉得:"不就是组件不用了嘛,框架会自动处理的"。但实际项目中,内存泄漏问题往往就出在这种想当然上。你有没有遇到过这些情况:页面关闭了,但定时器还在跑,控制台日志不停输出组件销毁了,但事件监听器没移除,导致...
你有没有遇到过这样的场景:一个TabBar下面挂着五六个页面,来回切换的时候,每次回到某个Tab,页面都要重新走一遍aboutToAppear、build这一套流程?如果这个页面里还有网络请求、复杂计算,那用户体验就真的——怎么说呢,有点"卡顿感"。
组件化开发的核心原则之一是单向数据流:数据从父组件流向子组件,事件从子组件流向父组件。你肯定遇到过这样的场景:子组件内部发生了某些变化(比如用户点击了按钮、输入了文本),父组件需要感知并做出响应。
📌 核心要点:@Extend用于扩展原生组件属性,@Styles用于定义可复用的样式集合,两者各有适用场景🎯 适用版本:HarmonyOS 5.0+ | API 12+🔗 官方文档:@Extend装饰器
📌 核心要点:@BuilderParam实现UI插槽,让组件接收外部传入的UI片段;@WrapBuilder动态包装Builder函数,实现运行时UI构建
写过UI的都知道,代码里总有一些重复的结构——比如列表项的布局、卡片的外壳、表单项的样式。你可能会想,把这些抽成@Component不就行了?确实可以,但@Component有点"重":它创建一个完整的组件实例,有独立的生命周期,状态管理也更复杂。
你有没有想过,一个组件从"出生"到"消亡"都经历了什么?在传统的Web开发中,我们习惯了React的componentDidMount和componentWillUnmount,或者Vue的mounted和beforeUnmount。HarmonyOS的ArkUI框架同样提供了完整的生命周期机制——只不过名字有点不一样。
你打开微信,底部有"微信"、"通讯录"、"发现"、"我"四个标签;打开淘宝,底部有"首页"、"逛逛"、"消息"、"购物车"、"我的"五个标签。这种"底部导航+内容区域"的交互模式,几乎成了移动端App的标配。
你有没有想过,为什么手机上的页面可以上下滑动?为什么首页的Banner能自动轮播?这些看似理所当然的交互,背后都是Scroll和Swiper在默默工作。
你打开淘宝、小红书、Pinterest,映入眼帘的是什么?是密密麻麻的商品卡片和图片流。这些页面有两个共同特点:一是多列排列,二是卡片高度参差不齐。前者用Grid就能搞定,后者则需要WaterFlow出场。