本项目定位为一款轻量级移动端文本编辑/笔记工具,面向学习记录、会议纪要、临时草稿等高频“快速写、随时改、随时找”的场景。目标是在鸿蒙端提供稳定流畅的编辑体验,并通过清晰的功能闭环提升效率:创建内容—编辑修改—保存管理—检索复用。核心功能包括:文本编辑(插入/删除/替换、光标定位与选区处理)、撤销/重做(基于变更记录恢复到任意最近状态,避免误操作损失)、内容持久化(本地保存/自动保存、打开历史内容)、基础管理(新建/重命名/删除、最近使用列表)、辅助体验(字数统计、空内容提示、编辑状态提示)。整体业务流程为:用户进入编辑页加载内容→输入触发变更记录与状态更新→按需撤销/重做回溯修改→离开页面或定时自动保存→在列表页再次打开继续编辑,实现“写作-回溯-保存-再编辑”的闭环。
项目采用 ArkTS + MVVM 思路组织代码:View 负责页面渲染与用户交互事件绑定;ViewModel(如 EditorViewModel)负责状态管理、业务规则与可测试逻辑;Model 承载数据结构与持久化所需的实体/DTO。编辑能力以“文本变更记录”作为核心抽象:将一次用户操作拆分为可回放的变更单元(包含变更位置、变更前/后文本、时间戳等),按顺序写入 undo 栈;执行撤销时从 undo 栈弹出并反向应用到当前文本,同时写入 redo 栈;执行重做则反向操作,实现稳定的撤销/重做链路。状态更新遵循单向数据流:输入事件→ViewModel 生成新状态→通知 View 刷新,避免页面与数据耦合。持久化层采用统一的存储适配(本地文件/首选项等按项目实际能力封装),在进入页面时加载,在退出或定时触发时保存,保证异常退出也能恢复。本人主要负责编辑状态管理、变更记录结构设计与撤销重做算法实现,以及保存时机与性能优化。遇到的难点包括:频繁输入导致记录过密、撤销粒度体验不佳、以及光标/选区与文本回放的同步问题。解决方案为:合并相邻同类操作(按时间窗口与位置连续性合并)、对长文本使用增量更新减少拷贝、在回放时同步维护光标与选区信息,并通过边界用例(空文本、跨行删除、连续粘贴等)完善校验,提升稳定性与可维护性。