鸿蒙 ArkTS 实战:Recipe Rewriter 从轻量生成到草稿管理完整解析
鸿蒙 ArkTS 实战Recipe Rewriter 从轻量生成到草稿管理完整解析前言Recipe Rewriter 是一个面向菜谱改写助手的鸿蒙 ArkTS 单页工具。它把主题输入、数量统计、提示备注和状态保存放在同一屏适合快速生成、筛选和沉淀内容草稿。项目服务于 家庭用户或内容作者把菜谱按口味、步骤和购物清单重新整理。对美食博主、家庭料理用户、轻食店运营来说真正重要的是把灵感或草稿从临时想法变成可追踪的列表而不是停留在一次性输入框里。业务痛点菜谱改写需要同时考虑食材、步骤、口味和采购清单手动整理容易遗漏关键说明。图示说明本文围绕 Recipe Rewriter 的页面状态、草稿记录、统计卡片和保存闭环进行拆解。一、业务定位与产品目标1.1 面向的使用场景用草稿列表管理不同菜谱版本用户可以快速保存满意方案并继续调整口味描述。 这类应用的核心不是替代完整平台而是在移动端提供一个短路径、低干扰、可持续整理的工作面板。1.2 页面能力概览当前页面可以拆成四个区域顶部标题明确工具用途。统计卡片展示Drafts与Saved。功能标签说明生成、调整、保存等能力边界。输入表单和草稿列表完成新增、展示与状态切换。页面区域实现元素业务意义标题区Text标识菜谱改写助手统计区totalAmount / savedCount统计菜谱草稿和保存进度标签区四个 Text 标签提示工具覆盖范围列表区ForEach管理草稿和结果二、工程结构与入口文件2.1 标准 Stage 结构项目采用标准鸿蒙 Stage 工程业务页面集中在entry/src/main/ets/pages/Index.ets。单页工具把模型、状态和布局集中呈现便于快速理解实现路径。entry/ src/ main/ ets/ entryability/ EntryAbility.ets pages/ Index.ets module.json52.2 模块入口理解页面代码负责业务交互模块配置负责应用加载。理解入口配置有助于排查页面未加载、Ability 路径错误等问题。{module:{name:entry,type:entry,abilities:[{name:EntryAbility,srcEntry:./ets/entryability/EntryAbility.ets,exported:true}]},topic:菜谱改写助手}三、数据模型草稿记录的最小闭环3.1 记录字段设计AiRecord用四个字段描述一条记录title表示主题amount表示数量口径note保存提示或结果状态saved表示是否已处理。interfaceAiRecord{title:string;amount:number;note:string;saved:boolean;}Staterecords:AiRecord[][{title:Tomato pasta,amount:1,note:Mild taste, list ready,saved:false},{title:Chicken soup,amount:1,note:Steps generated,saved:false}];3.2 默认数据的业务含义默认数据用于说明应用的真实使用方向也让首次打开页面时可以直接看到统计和列表效果。默认标题数量备注SavedTomato pasta1Mild taste, list readyfalseChicken soup1Steps generatedfalse这些默认记录覆盖食材输入、步骤生成、口味调整和购物清单能体现项目不是泛化空壳而是围绕具体内容流程设计。四、状态管理输入、模式与反馈4.1 页面状态字段页面使用State管理输入草稿、智能模式开关和状态文案。smartMode控制顶部开关status负责反馈新增是否成功。StatetitleText:string;StateamountText:string;StatenoteText:string;StatesmartMode:booleantrue;Statestatus:stringAI lightweight tool ready;4.2 草稿与正式记录分离输入框内容先进入titleText、amountText和noteText点击按钮且校验通过后才会写入 records。这个设计能避免半成品输入污染正式草稿列表。关键点生成类工具也需要记录闭环否则用户会得到一堆瞬时结果却无法持续比较和复用。五、统计逻辑数量与保存进度5.1 总量统计totalAmount()遍历 records把 amount 累加为Drafts。这个数字表示当前页面已经沉淀了多少菜谱草稿。5.2 状态统计savedCount()根据saved字段统计已处理记录并以已处理/总记录数的形式显示。privatetotalAmount():number{lettotal0;this.records.forEach((item:AiRecord){totalitem.amount;});returntotal;}privatesavedCount():number{letcount0;this.records.forEach((item:AiRecord){if(item.saved){count;}});returncount;}函数统计字段显示位置业务价值totalAmountamountDrafts掌握菜谱草稿规模savedCountsavedSaved掌握可复用结果比例toggleSavedindex列表勾选快速更新状态六、新增草稿流程6.1 输入校验新增时先把数量字符串转换为数字再检查标题是否为空、数量是否有效。校验失败时只更新状态文案不写入列表。6.2 顶部插入策略新草稿插入到列表顶部便于用户优先查看刚生成或刚整理的内容。privateaddRecord():void{constamountNumber(this.amountText);if(this.titleText.trim().length0||!Number.isFinite(amount)){this.statusEnter title and valid number;return;}this.records[{title:this.titleText,amount:Math.round(amount),note:this.noteText.length0?this.noteText:Draft note,saved:false},...this.records];this.titleText;this.amountText;this.noteText;this.statusDraft added;}七、保存状态与刷新机制7.1 状态切换列表勾选会切换saved字段。随后通过数组展开生成新引用让界面稳定刷新。privatetoggleSaved(index:number):void{this.records[index].saved!this.records[index].saved;this.records[...this.records];}7.2 视觉反馈被勾选的记录会使用浅绿色背景未勾选记录保持白色。这种反馈能帮助用户快速区分待处理草稿和已保存结果。状态背景用户感知未处理#FFFFFF仍需比较或修改已处理#DCFCE7可以复用或归档输入异常状态文案需要修正输入八、统计卡片与功能标签8.1 顶部统计卡片顶部统计区左侧展示Drafts右侧展示Saved。紫色强调生成数量绿色强调已处理状态。Row({space:10}){Column({space:4}){Text(Drafts).fontSize(13).fontColor(#475569)Text(String(this.totalAmount())).fontSize(24).fontWeight(FontWeight.Bold).fontColor(#7C3AED)}.layoutWeight(1).padding(14).backgroundColor(#EDE9FE).borderRadius(8)Column({space:4}){Text(Saved).fontSize(13).fontColor(#475569)Text(this.savedCount()/this.records.length).fontSize(24).fontWeight(FontWeight.Bold).fontColor(#047857)}.layoutWeight(1).padding(14).backgroundColor(#D1FAE5).borderRadius(8)}8.2 功能标签解读页面标签分别是Ingredient input、Step generate、Taste adjust、Shopping list对应内容生成工具的四个基本环节。食材输入确定输入对象。步骤生成形成初始结果。口味调整进行调整或判断。购物清单沉淀可复用结果。九、输入表单与列表渲染9.1 表单区域表单采用主题、数量、提示备注三个输入框配合一个新增按钮完成草稿创建。Column({space:10}){TextInput({placeholder:Input topic,text:this.titleText}).onChange((value:string)this.titleTextvalue)TextInput({placeholder:Count,text:this.amountText}).type(InputType.Number).onChange((value:string)this.amountTextvalue)TextInput({placeholder:Prompt note,text:this.noteText}).onChange((value:string)this.noteTextvalue)Button(Add draft).height(42).width(100%).onClick(()this.addRecord())}9.2 列表区域列表使用ForEach渲染 records。每一行都包含勾选框、标题、备注和数量适合快速浏览草稿质量和处理状态。ForEach(this.records,(item:AiRecord,index:number){Row(){Toggle({type:ToggleType.Checkbox,isOn:item.saved}).onChange(()this.toggleSaved(index))Column({space:6}){Text(item.title).fontSize(18).fontWeight(FontWeight.Bold).fontColor(#111827)Text(item.note).fontSize(14).fontColor(#475569)}.layoutWeight(1).margin({left:8})Text(String(item.amount)).fontSize(18).fontWeight(FontWeight.Bold).fontColor(#7C3AED)}.padding(14).backgroundColor(item.saved?#DCFCE7:#FFFFFF).borderRadius(8).width(100%)})十、业务流程复盘10.1 标准路径Recipe Rewriter 的一次使用可以拆成四步输入菜谱或食材主题。填写生成份数。补充口味或步骤提示。满意后保存草稿。10.2 异常路径当标题为空或数量无效时新增动作会被拦截。这能保证列表中的草稿至少具备主题和数量两个核心信息。constamountNumber(this.amountText);constinvalidthis.titleText.trim().length0||!Number.isFinite(amount);if(invalid){this.statusEnter title and valid number;}十一、扩展设计11.1 持久化记录如果要从演示工具走向正式应用可以为记录增加 id、创建时间和更新时间并写入本地存储。interfacePersistedDraft{id:string;title:string;amount:number;note:string;saved:boolean;updatedAt:number;}11.2 行业能力扩展后续可以接入营养估算、人数换算、过敏源标注和购物清单导出。推荐按以下顺序扩展先做本地保存避免草稿丢失。再增加模板、分类和搜索能力。最后接入导出、分享或云端同步。十二、调试与验证12.1 核心验证点验证时重点检查新增草稿、数量统计、状态勾选、背景变化和错误提示。12.2 运行检查可以在 DevEco Studio 中启动预览或真机运行按输入、生成、保存的路径逐项验证。# 常规验证动作# 1. 输入主题、数量和提示备注# 2. 点击 Add draft 或 Add record# 3. 检查新记录是否位于顶部# 4. 勾选记录并观察统计变化验证项预期结果业务意义有效新增列表顶部出现草稿快速沉淀内容结果空标题显示错误状态避免无主题记录勾选状态统计和背景同步变化区分可复用结果空备注自动写入默认备注保证列表可读十三、可复用的生成工具模式13.1 通用公式这类页面可以抽象成一个生成类工具公式输入主题、生成数量、提示备注、保存状态。输入主题 生成数量 提示备注 保存状态 可复用的轻量生成工具13.2 复用边界复用时不能只替换应用标题还要同步调整默认数据、统计名称、功能标签和业务说明否则生成工具会失去真实场景感。总结Recipe Rewriter 用简洁的 ArkTS 单页结构把菜谱改写助手场景中的生成、整理、保存动作串成闭环。它的重点不是复杂模型调用而是用清晰的状态和列表管理结果。对于 美食博主、家庭料理用户、轻食店运营 来说这种工具能减少临时记录和反复复制让草稿持续沉淀。后续补充持久化、模板和导出能力后它可以进一步扩展为更完整的内容生产助手。如果这篇文章对你有帮助可以点赞、收藏并关注后续会继续拆解更多鸿蒙 ArkTS 实战项目。相关资源HarmonyOS 应用开发ArkTS 语言基础ArkUI 声明式开发DevEco StudioStage 模型应用结构Ability Kit

相关新闻

微信小程序版2048游戏源码(含完整页面结构、核心算法与运行截图)

微信小程序版2048游戏源码(含完整页面结构、核心算法与运行截图)

本文还有配套的精品资源,点击获取 简介:直接导入微信开发者工具就能跑起来的2048小游戏源码,包含全部前端文件:app.js应用入口、app.全局配置、app.wxss基础样式,pages目录下是游戏主页面wxml/wxs/js三件套&#xf…

2026/10/18 2:25:47 阅读更多 →
鸿蒙 ArkTS 实战:Title Inspiration Machine 从轻量生成到草稿管理完整解析

鸿蒙 ArkTS 实战:Title Inspiration Machine 从轻量生成到草稿管理完整解析

鸿蒙 ArkTS 实战:Title Inspiration Machine 从轻量生成到草稿管理完整解析 前言 Title Inspiration Machine 是一个面向 标题灵感生成器 的鸿蒙 ArkTS 单页工具。它把主题输入、数量统计、提示备注和状态保存放在同一屏,适合快速生成、筛选和沉淀内容…

2026/10/18 2:27:39 阅读更多 →
C语言调用C++代码实战:ABI兼容、接口设计与工程实践

C语言调用C++代码实战:ABI兼容、接口设计与工程实践

1. 项目概述与核心挑战最近在重构一个老旧的嵌入式系统时,我遇到了一个非常典型但又有点棘手的问题:一个核心的、用纯C语言编写的驱动模块,需要调用另一个新开发的、用C编写的算法库中的某些功能。这听起来像是“一个C文件调用另一个C文件”的…

2026/10/17 19:41:13 阅读更多 →

最新新闻

Pyhton编程 - 第10章 错误和异常

Pyhton编程 - 第10章 错误和异常

第10章 错误和异常 10.1 错误和异常的介绍 Python是一门解释型语言,只有在程序运行后才会执行语法检查。所以,只有在运行或测试程序时,才会真正知道该程序能不能正常运行。 Python有两种错误很容易辨认:语法错误和异常。 10.1.1 语…

2026/10/18 14:00:14 阅读更多 →
华为交换机VLAN配置实战:从广播域隔离到跨VLAN通信

华为交换机VLAN配置实战:从广播域隔离到跨VLAN通信

1. 从一次全公司网络卡死说起:VLAN到底解决什么问题去年下半年,我接手了一家公司内部网络的维护工作。网络看起来很"正常":几台交换机堆叠在弱电井里,终端、打印机、监控全部接入,IP地址段也划分得井井有条。…

2026/10/18 14:00:14 阅读更多 →
PyTorch实现Deep Dream:CNN特征可视化与梯度上升实战

PyTorch实现Deep Dream:CNN特征可视化与梯度上升实战

Deep Dream 这个名词,第一次听到的人多半以为是某种“梦境生成器”,实际上它是 CNN 特征可视化里最有视觉冲击力的一类玩法。核心就一句话:把一张普通图片喂给卷积神经网络,然后反着用梯度,故意去放大网络“看到”的某…

2026/10/18 14:00:14 阅读更多 →
2026带表单收集功能的小程序平台推荐:从预算成本角度讲清怎么选

2026带表单收集功能的小程序平台推荐:从预算成本角度讲清怎么选

做表单收集小程序,最关心的往往不是功能多炫,而是钱花得值不值。预算成本这个角度,听起来朴素,实则是选型里最容易踩坑的地方。很多老板一开始只盯着首年报价,等到续费、升级、加功能的时候才发现总账远超预期。这篇文…

2026/10/18 14:00:14 阅读更多 →
2026 广东广州运动地板胶十大厂家优选推荐,工程采购与场馆建设怎么选全维度解析

2026 广东广州运动地板胶十大厂家优选推荐,工程采购与场馆建设怎么选全维度解析

2026 广东广州运动地板胶十大厂家优选推荐,工程采购与场馆建设怎么选全维度解析2026 年,粤港澳大湾区文体设施建设进入新一轮扩容周期,广州、深圳、佛山、东莞等地的学校运动场、商业球馆、儿童游乐场、健身空间密集开工,运动地板…

2026/10/18 14:00:14 阅读更多 →
YOLO新手入门避坑指南:环境配置、数据转换与训练全流程

YOLO新手入门避坑指南:环境配置、数据转换与训练全流程

简介:本资源是一份专为深度学习初学者打造的YOLO目标检测系统入门指南,面向零基础但对计算机视觉与实时检测技术感兴趣的新手小白,帮助其快速理解YOLO核心原理并完成从环境搭建、数据准备到模型训练与部署的全流程实践。资源为单文件PDF文档&…

2026/10/18 13:59:13 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →