96SEO 2026-06-13 12:47 0
先说一句,老铁们,这玩意儿叫旧物集,可别小kan它。
哈哈,别以为只是一堆图片和文字,背后可是有一套完整的时间线+收藏体系。

今天咱们就聊聊在鸿蒙上咋整这套东西。
需求拆解:到底要干啥?先把需求梳理清楚。
1)用户Neng把自己手里的老东西登记进去。
2)每件东西dou有获取日期,系统要按年分组展示。
3)用户Ke以点个星标,把它放进“珍藏”列表。
4)还Neng写点小故事,让回忆geng丰满。
5)Zui关键的是这些数据得保存在本地,还得随时加载出来。
说实话,这几个点kan起来简单,但细节里暗藏坑。
第一步:时间线的实现思路时间线核心是把数据按年份分组,然后渲染成列表。
在 ArkTS 里我用 Record 把同一年份的物品装进数组。
@Entry
@Component
struct TimelinePage {
@State items: CollectibleItem =
@State groupedByYear: Record = {}
async aboutToAppear {
await this.loadItems
this.groupItems
}
async loadItems {
const store = await preferences.getPreferences, 'jiuwuji_data')
const raw = await store.get as string
this.items = JSON.parse
// 按获取日期倒序
this.items.sort =>
new Date.getTime - new Date.getTime
)
}
groupItems {
this.groupedByYear = {}
this.items.forEach(item => {
const year = new Date.getFullYear.toString
if {
this.groupedByYear =
}
this.groupedByYear.push
})
}
build {
Column {
Text
.fontSize
.fontWeight
.margin
List {
ForEach, => {
ListItem {
Column {
Text
.fontSize
.fontWeight
.fontColor
.margin
ForEach => {
Row {
// 小圆点装饰
Circle { width; height; fill }
Column {
Text
.fontSize
.fontWeight
Text
.fontSize
.fontColor
.maxLines
.textOverflow
}.layoutWeight
}.margin
})
}
}
})
}.layoutWeight
}.width.height.padding.backgroundColor
}
}
细节优化:懒加载 + 虚拟列表
Ru果你这玩意儿Yi经积攒几百条记录,那一次性渲染会卡死。
用鸿蒙自带的 LazyForEach Neng帮你只渲染可视区内容。
记得给每个 ListItem 设置唯一 key,省得复用出错。
第二步:收藏管理收藏其实就是在数据模型里加个布尔字段 isFavorite,页面上再过滤一次就行啦。
@Entry
@Component
struct FavoritesPage {
@State favorites: CollectibleItem =
async aboutToAppear {
const store = await preferences.getPreferences, 'jiuwuji_data')
const raw = await store.get as string
const all: CollectibleItem = JSON.parse
// filter 出星标项
this.favorites = all.filter
}
build {
Column {
Text
.fontSize
.fontWeight
.margin
if {
Text
.fontSize
.fontColor
} else {
List {
ForEach => {
ListItem{
Row{
if {
Image.width.height.objectFit.borderRadius
} else {
// 占位图
Box.width.height.backgroundColor
}
Column{
Text.fontSize.fontWeight
Text).fontSize.fontColor
}.layoutWeight.margin
}.padding.backgroundColor.borderRadius.shadow
}
})
}.layoutWeight
}
}.width.height.padding.backgroundColor
}
private getCategoryName:string{
return ITEM_CATEGORIES.find?.name||cat
}
}
交互小技巧:长按切换收藏状态
在列表项上加个长按手势:
- 按住>500ms 弹出“加入/移除珍藏”弹框。
- 确认后geng新本地数据并刷新页面。
第三步:本地持久化方案PREFERENCES 是Zui省事儿的办法,因为旧物集的数据量不会太大。代码里Yi经演示了怎么读写 JSON 字符串。
Ru果以后想加云同步,就把这块换成 LiteDB 或者 OpenHarmony 自带的 SQLite 就行了结构保持一致即可。
A/B 测试:缓存 vs 实时读取A版直接每次打开页面dou读取 Preferences——简单但慢;B版启动时一次性读到内存变量,再操作内存;退出或显式保存时再写回去。实际测试下来 B版快了约30%。咱就是说这种方式对大多数场景够用了。
第四步:性Neng与动画细节时间线滚动时加点淡入淡出的动画会让体验geng柔和。鸿蒙提供了 @Animate, 用法跟 Vue 差不多:
@Animate({
duration:300,
curve:'ease-in-out'
})
fun fadeIn{
node.opacity=1;
}
# 为什么百度不收录?
答:百度爬虫对 JavaScript 渲染支持有限,而鸿蒙 App 的内容dou是运行时生成的 UI,没有传统 HTML 页面可供爬取。所以除非你把文章搬到 Web 上,否则搜索引擎自然抓不到。换句话说你想让它被收录,就得准备一份静态网页或者使用 SSR。懂吧?哈哈,这也是我们写这篇 SEO 文案的原因——给你一份Ke以直接复制粘贴到博客里的纯 HTML 内容!
Caching 与分页策略- 对于超过200条记录,建议分页加载,每页20条;配合下拉刷新即可。
- 使用 LruCache 缓存Zui近访问过的图片,避免频繁磁盘 IO 导致卡顿。记得设置合适大小,不然会吃掉太多内存哦~害!
- 确保所有日期dou走 ISO8601(比如 "2024-03-15")。Ru果用了本地化字符串,要先统一转成 Date 再取年份,否则会出现 “NaN”。咱们之前就踩了这个坑,一直以为是分组函数 bug,其实是日期串乱了!不对不对,应该是输入校验没Zuo好才对呀~
- 每次点击星标后dou要调用 .set). 否则页面刷新后又回到原来的状态,让人抓狂。
- 用 Image 的 lazyLoad 属性;
- 给 Image 设置固定宽高;
- 开启硬件加速层,别忘了在 build 方法里加 .layerType.
- 鸿蒙组件之间默认是独立状态,Ru果你在详情页修改了某件物品,需要通知时间线页刷新。Zui简办法是使用全局事件总线 ) 或者把数据放进共享 Preferences 并在返回时重新读取。其实我Zui喜欢那种 “全局单例” 的方式,一行代码搞定——不过要注意线程安全哦!你懂的~
& 小贴士 🎉
- 把业务模型抽象成 {id,name,category,acquiredDate,photoUri,isFavorite,story}.
- 用 Record 按年分组,实现时间线展示.
- 收藏即过滤 + UI 标记.
- 本地持久化首选 Preferences,后期可迁移至 SQLite.
- 性Neng优化从懒加载、缓存、虚拟列表入手.
说实话,这套方案Yi经在我的「旧物集」App 中跑了半年多,没有崩溃,也没有明显卡顿。Ru果你正好想Zuo类似功Neng,就照搬这些代码块吧,改改字段名就Neng直接用。
Epilogue – 给未来的自己留点话# Ru果今天你正打算把旧玩具、老相册甚至尘封的信件数字化,这套「时间线+收藏」框架足够灵活,Ke以随时 标签、多语言描述或社交分享功Neng。只要别忘了:
- 数据结构保持一致;
- 每次写完后跑一下本地单元测试;
- UI 上留一点空白,让用户自行填充故事.
# Zui后一句:
Ru果还有啥疑问,留言来聊哈!我这边还有一堆踩坑日志Ke以分享~ 哈哈~ 不客气啊!🤗
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback