网站建设最花时间的是电脑虚拟主机

张小明 2026/1/2 19:10:25
网站建设最花时间的是,电脑虚拟主机,网页制作的基本步骤,网页空间欢迎大家加入开源鸿蒙跨平台开发者社区#xff0c;一起共建开源鸿蒙跨平台生态。 本文对应模块#xff1a;pages.js 中“财务目标”页面的 HTML 模板与 UI 结构#xff0c;以及与 db.js 中 goals 表的配合#xff1b;同时会补充一段鸿蒙 ArkTS 代码#xff0c;说明目标数据…欢迎大家加入开源鸿蒙跨平台开发者社区一起共建开源鸿蒙跨平台生态。本文对应模块pages.js中“财务目标”页面的 HTML 模板与 UI 结构以及与db.js中 goals 表的配合同时会补充一段鸿蒙 ArkTS 代码说明目标数据如何通过 FileManager 插件参与导出与导入。1. 模块定位从“记账”到“有目标地记账”前面的模块更多关注日常收支、账户和预算本模块要解决的是另一个问题不只是记录历史而是给未来定一个可以量化的目标并在页面中清楚地看到当前达成进度。典型的财务目标示例存 5 万元作为应急金在一年内攒够首付在半年内还清某笔贷款。在 UI 层面我们需要一个页面列出所有目标展示当前进度进度条或百分比提供新增/编辑目标的入口。2. 页面整体结构目标列表 进度概览在pages.js中“财务目标”页面的结构可以设计为// 财务目标页面 goals:()div classpc-page-container div classpc-page-header h2 财务目标/h2 p制定和跟踪你的长期财务目标/p /div div classpc-card div classpc-card-header h3目标列表/h3 button idgoal-add-btn classpc-button pc-button-primary新增目标/button /div div classpc-card-body div idgoals-list classpc-goals-list !-- JS 动态渲染每个目标及其进度条 -- /div /div /div /div,这里沿用了熟悉的 PC 布局骨架pc-page-containerpc-page-header作为页面的统一头部用一张pc-card承载“目标列表”goal-add-btn是新增目标的主入口goals-list容器承载每一个目标项的 UI 结构。3. 单个目标项的 UI 结构一个目标项至少需要展示目标名称目标金额当前已完成金额进度条和百分比操作按钮编辑 / 删除。示例结构functionrenderGoalItem(goal){constratiogoal.targetAmount0?Math.min(goal.currentAmount/goal.targetAmount,1):0;constpercentMath.round(ratio*100);returndiv classpc-goal-item>${goal.id} div classpc-goal-main div classpc-goal-title${goal.name}/div div classpc-goal-amounts span目标¥${goal.targetAmount.toFixed(2)}/span span当前¥${goal.currentAmount.toFixed(2)}/span /div div classpc-goal-progress div classpc-goal-progress-bar div classpc-goal-progress-inner stylewidth:${percent}%; /div /div span classpc-goal-progress-text${percent}%/span /div /div div classpc-goal-actions button classpc-button pc-button-sm>;}通过pc-goal-progress-inner的宽度控制进度条长度配合百分比文本使用户一眼就能看到目标完成度。4. 从数据库加载目标并渲染在db.js中我们可以有一个goals表结构类似// 目标表if(!db.objectStoreNames.contains(goals)){constgoalStoredb.createObjectStore(goals,{keyPath:id});goalStore.createIndex(createdAt,createdAt,{unique:false});}asyncgetGoals(){returnthis.getAll(goals);}在pages.js中加载并渲染asyncloadGoalsPage(){constcontainerdocument.getElementById(goals-list);if(!container)return;constgoalsawaitwindow.financeDB.getGoals();if(!goals||goals.length0){container.innerHTMLp classpc-text-muted暂时还没有任何财务目标可以点击右上角“新增目标”创建一个。/p;return;}consthtmlgoals.map(grenderGoalItem(g)).join();container.innerHTMLhtml;}这段逻辑与前面交易列表、账户列表的加载方式是同一种思路从 IndexedDB 取出所有目标映射成 HTML 片段写入页面容器。5. 新增和编辑目标表单与保存逻辑新增目标可以通过一个模态框或右侧表单来完成这里展示一个简化的保存逻辑asyncsaveGoal(){constnameInputdocument.getElementById(goal-name);consttargetInputdocument.getElementById(goal-target);constcurrentInputdocument.getElementById(goal-current);constnamenameInput?.value.trim();consttargetAmountparseFloat(targetInput?.value||0);constcurrentAmountparseFloat(currentInput?.value||0);if(!name){Toast.error(请输入目标名称);return;}if(!targetAmount||targetAmount0){Toast.error(请输入合理的目标金额);return;}if(currentAmount0){Toast.error(当前金额不能为负数);return;}constgoal{name,targetAmount,currentAmount,};awaitwindow.financeDB.addGoal(goal);Toast.success(目标已保存);this.loadGoalsPage();}对应的数据库操作示例asyncaddGoal(goal){goal.idthis.generateId();goal.createdAtnewDate().toISOString();returnthis.add(goals,goal);}编辑目标则是在 UI 中找出对应data-id从goals表读取后填充表单再通过updateGoal保存修改即可。6. ArkTS 侧财务目标数据的导出与导入财务目标作为goals表的一部分同样需要在导出/导入时被保留下来。导出调用链和前面预算模块类似Web 层调用financeDB.exportData()返回包含goals在内的完整数据对象JS 使用JSON.stringify序列化通过cordova.exec(FileManager, exportData, [json])把字符串交给 ArkTS 插件ArkTS 插件使用fileIo将其写入备份文件。下面是FileManagerPlugin.ets中的鸿蒙 ArkTS 片段与前文保持一致风格import{CordovaPlugin,CallbackContext}frommagongshou/harmony-cordova/Index;import{PluginResult,MessageStatus}frommagongshou/harmony-cordova/Index;import{common}fromkit.AbilityKit;import{fileIo}fromkit.CoreFileKit;exportclassFileManagerPluginextendsCordovaPlugin{asyncexportData(callbackContext:CallbackContext,args:string[]):Promisevoid{try{constjsonargs[0];// 其中包含 goals 表以及其他所有表的数据constcontextgetContext()ascommon.UIAbilityContext;constcacheDir:stringcontext.cacheDir;constfilePath:string${cacheDir}/finance-backup.json;constfileawaitfileIo.open(filePath,fileIo.OpenMode.WRITE_ONLY|fileIo.OpenMode.CREATE);awaitfileIo.write(file.fd,json);awaitfileIo.close(file.fd);constresultPluginResult.createByString(MessageStatus.OK,filePath);callbackContext.sendPluginResult(result);}catch(error){constresultPluginResult.createByString(MessageStatus.ERROR,(errorasError).message);callbackContext.sendPluginResult(result);}}}从目标模块视角看Web 层专注于目标的创建、进度计算和展示ArkTS 插件专注于“把包含目标在内的全部数据安全写入文件”当在新设备上导入备份后只要goals表被正确恢复目标页面 UI 就能重新渲染出所有目标及其进度。7. 小结财务目标页面 UI 的关键设计点统一 PC 布局与组件风格继续复用pc-page-container、pc-card等组件让目标页面在整体视觉上与其他模块保持一致进度条直观表达完成度通过pc-goal-progress-inner的宽度和百分比文本让用户一眼看懂“目标完成了多少”与 goals 表结构紧密结合目标名称、目标金额、当前金额在 UI 与数据库之间一一映射便于后续做统计或报表新增/编辑操作与列表展示解耦使用独立的表单负责新增/编辑列表只负责展示和触发操作事件代码结构更清晰与 ArkTS FileManager 插件协同目标数据作为整体数据库快照的一部分由 ArkTS 插件负责导出/导入保证在多设备之间迁移时不会丢失通过本模块你的应用从“记录历史 管理当前”进一步扩展到了“规划未来”用户不仅能看到资产现状还能在目标页面上持续跟踪自己距离目标的差距和进展这也是一个财务管理工具真正开始“有温度”的地方。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

易语言网站做软件下载潜山做网站

还在为B站官方客户端的种种限制而烦恼吗?PiliPlus这个基于Flutter开发的第三方B站客户端,通过手势操控、智能过滤、个性化界面等核心功能,彻底改变了传统观看体验。这款开源项目不仅能完美替代官方应用,更提供了许多让你意想不到的…

张小明 2025/12/29 15:40:34 网站建设

做网站运营有前途在线刷高质量外链

Linux系统常见问题排查与解决指南 1. 远程启动图形程序问题 在使用SSH登录远程服务器后启动图形程序时,可能会遇到“Unable to initialize graphical environment”的错误。这通常是由于没有使用图形环境运行工具,或者未设置DISPLAY变量导致的。 解决方法:需要启用X11转发…

张小明 2025/12/30 6:03:41 网站建设

软件定制开发网站旅游网站建设要求

天津XX软件公司大文件传输系统前端技术方案(第一人称视角) 一、技术选型与架构设计 作为前端负责人,我主导了基于Vue3 TypeScript的模块化架构设计,核心解决以下痛点: 浏览器兼容性:通过分层适配策略覆…

张小明 2025/12/30 0:36:51 网站建设

知名网站建设商家官方微网站

WAF规则自定义核心原则避免使用过于宽泛的正则表达式,采用精准匹配模式。例如针对SQL注入防护,避免简单过滤UNION SELECT,而是结合具体业务上下文设计规则。业务流量基线分析通过流量日志分析建立正常请求特征模型。统计高频访问路径、参数类…

张小明 2025/12/30 22:22:53 网站建设

本溪网站建设兼职宣传网页

AutoGPT项目贡献指南:如何参与开源社区建设 在生成式AI迅猛发展的今天,我们正见证一个从“对话助手”到“自主代理”的范式转移。过去,用户需要一步步告诉AI该做什么;而现在,只需说一句“帮我写一份关于气候变化的科普…

张小明 2025/12/29 11:46:41 网站建设

网站建设 推广全流程网站建设与策划试卷

随着人们对宠物需求的不断增长,一个高效、便捷的宠物服务平台应运而生。平台采用前后端分离的开发模式,前端专注于展示界面和用户交互,后端则负责处理业务逻辑与数据存储。在技术选型上,后端使用 Java 语言结合 Spring Boot 框架&…

张小明 2025/12/31 0:53:05 网站建设