做家电维修网站建设招标网官方网站

张小明 2026/1/2 13:12:59
做家电维修网站,建设招标网官方网站,全网营销推广运营培训学校,最便宜云服务器一、MVVM模式 应用通过状态去渲染更新UI是程序设计中相对复杂#xff0c;但又十分重要的#xff0c;往往决定了应用程序的性能。程序的状态数据通常包含了数组、对象#xff0c;或者是嵌套对象组合而成。在这些情况下#xff0c;ArkUI采取MVVM Model View ViewModel模式…一、MVVM模式应用通过状态去渲染更新UI是程序设计中相对复杂但又十分重要的往往决定了应用程序的性能。程序的状态数据通常包含了数组、对象或者是嵌套对象组合而成。在这些情况下ArkUI采取MVVM Model View ViewModel模式其中状态管理模块起到的就是ViewModel的作用将数据与视图绑定在一起更新数据的时候直接更新视图。Model层存储数据和相关逻辑的模型。它表示组件或其他相关业务逻辑之间传输的数据。Model是对原始数据的进一步处理。View层在ArkUI中通常是Component装饰组件渲染的UI。ViewModel层在ArkUI中ViewModel是存储在自定义组件的状态变量、LocalStorage和AppStorage中的数据。自定义组件通过执行其build()方法或者Builder装饰的方法来渲染UI即ViewModel可以渲染View。View可以通过相应event handler来改变ViewModel即事件驱动ViewModel的改变另外ViewModel提供了Watch回调方法用于监听状态数据的改变。在ViewModel被改变时需要同步回Model层这样才能保证ViewModel和Model的一致性即应用自身数据的一致性。ViewModel结构设计应始终为了适配自定义组件的构建和更新这也是将Model和ViewModel分开的原因。目前很多关于UI构造和更新的问题都是由于ViewModel的设计并没有很好的支持自定义组件的渲染或者试图去让自定义组件强行适配Model层而中间没有用ViewModel来进行分离。例如一个应用程序直接将SQL数据库中的数据读入内存这种数据模型不能很好的直接适配自定义组件的渲染所以在应用程序开发中需要适配ViewModel层。根据上面涉及SQL数据库的示例应用程序应设计为Model针对数据库高效操作的数据模型。ViewModel针对ArkUI状态管理功能进行高效的UI更新的视图模型。部署 converters/adapters converters/adapters作用于Model和ViewModel的相互转换。converters/adapters可以转换最初从数据库读取的Model来创建并初始化ViewModel。在应用的使用场景中UI会通过event handler改变ViewModel此时converters/adapters需要将ViewModel的更新数据同步回Model。虽然与强制将UI拟合到SQL数据库模式MV模式相比MVVM的设计比较复杂但应用程序开发人员可以通过ViewModel层的隔离来简化UI的设计和实现以此来收获更好的UI性能。二、分层架构设计企业级项目分析har hsp haphttps://gitee.com/harmonyos_codelabs/MultiVideoApplication/tree/masterhttps://gitee.com/harmonyos_codelabs/MusicHomehttps://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials_Next-BasicArchitectureDesignPart2https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/application-dev-guide-0000001630265101概述HarmonyOS应用的分层架构设计以一套代码工程为基础旨在为华为的手机、2in1等18全场景设备提供支持实现了“一次开发多端部署”的开发理念。HarmonyOS应用的分层架构主要包括三个层次产品定制层、基础特性层和公共能力层为开发者构建了一个清晰、高效、可扩展的设计架构。分层思想图1分层架构逻辑模型产品定制层产品定制层专注于满足不同设备或使用场景如应用的个性化需求包括UI设计、资源和配置以及针对特定场景的交互逻辑和功能特性。产品定制层的功能模块独立运作同时依赖基础特性层和公共能力层来实现具体功能。作为应用的入口产品定制层是用户直接互动的界面。为满足特定产品需求产品定制层可灵活地调整和扩展从而满足各种使用场景。基础特性层基础特性层位于公共能力层之上用于存放基础特性集合例如相对独立的功能UI和业务逻辑实现。该层的每个功能模块都具有高内聚、低耦合、可定制的特点以支持产品的灵活部署。基础特性层为上层的产品定制层提供稳健且丰富的基础功能支持包括UI组件、基础服务等。同时依赖于下层的公共能力层为其提供通用功能和服务。为了增强系统的可扩展性和维护性基础特性层将功能进行模块化处理。例如一个应用的底部导航栏中的每个选项都可能是一个独立的业务模块。公共能力层公共功能层用于存放公共基础能力集中了例如公共UI组件、数据管理、外部交互以及工具库等的共享功能。应用可以共享和调用这些公共能力。公共能力层为上层的基础特性层和产品定制层提供稳定可靠的功能支持确保整个应用的稳定性和可维护性。公共能力层包括但不限于以下组成公共UI组件这些组件被设计成通用且高度可复用的确保在不同的应用程序模块间保持一致的用户体验。公共UI组件提供了标准化且友好的界面帮助开发者快速实现常见的用户交互需求例如提示、警告、加载状态显示等从而提高开发效率和用户满意度。数据管理负责应用程序中数据的存储和访问包括应用数据、系统数据等提供了统一的数据管理接口简化数据的读写操作。通过集中式的数据管理方式不仅使得数据的维护更为简单而且能够保证数据的一致性和安全性。外部交互负责应用程序与外部系统的交互包括网络请求、文件I/O、设备I/O等提供统一的外部交互接口简化应用程序与外部系统的交互。开发者可以更为方便地实现应用程序的网络通信、数据存储和硬件接入等功能从而加速开发流程并保证程序的稳定性和性能。工具库提供一系列常用工具函数和类例如字符串处理、日期时间处理、加密解密、数据压缩解压等帮助开发者提高效率和代码质量。架构思想图2分层架构开发模型产品定制层产品定制层的各个子目录会被编译成一个Entry类型的HAP作为应用的主入口。该层主要针对跨多种设备为各种设备形态集成相应的功能和特性。产品定制层被划分为多个功能模块每个功能模块都针对特定的设备或使用场景设计并根据具体的产品需求进行功能及交互的定制开发。说明在产品定制层开发者可以从不同设备对应应用的UX设计和功能两个维度结合具体的业务场景选择一次编译生成相同或者不同的HAP或其组合。通过使用定制多目标构建产物的定制功能可以将应用所对应的HAP编译成各自的.app文件用于上架到应用市场。基础特性层在基础特性层中功能模块根据部署需求被分为两类。对于需要通过Ability承载的功能可以设计为Feature类型的HAP而对于不需要通过Ability承载的功能根据是否需要实现按需加载可以选择设计为HAR模块或者HSP模块编译后对应HAR包或者HSP包。公共能力层公共能力层的各子目录将被编译成HAR包而他们只能被产品定制层和基础特性层所依赖不允许存在反向依赖。该层旨在提取模块化公共基础能力为上层提供标准接口和协议从而提高整体的复用率和开发效率。部署结构安卓 .apkIOS .ipaHM .app图3分层架构部署模型不同设备的定制应用程序.app文件在流水线或应用市场上被解包为n * Entry类型的HAP n * Feature类型的HAP根据设备类型和使用场景将应用部署到不同类型的设备上实现多端的统一用户体验。说明当Entry类型的HAP和Feature类型的HAP被分发并部署到相应的设备时他们所依赖的HSP也会一同被分发并部署到相应的设备上。在部署模型中每个Entry类型的HAP代表了应用的入口点而Feature类型的HAP则包含了应用的特定功能模块。允许应用能够以模块化的方式适配和部署从而满足不同设备和场景的需求。该部署模型不仅优化了应用的组织结构也为保持应用在各种设备和场景中的一致性提供了支持。通过按照设备类型和使用场景来区分和部署不同的HAP能确保无论在何种设备或场景中用户都能获得统一且高质量的体验。模块种类1 就是三个普通目录 里面放n个目录 更符合鸿蒙 一次开发 多端部署的思想 万物互联2 common har features feature.hap/har/hsp products entry.hap1、har跟随使用方编译多个使用方会生成多份相同拷贝hsp独立编译运行时在一个进程中代码也只会存在一份2、har可以作为二方库、三方库作为二方库发布到OHPM私仓供公司内部其他应用使用。 作为三方库发布到OHPM中心仓供其他应用使用。实战演练创建deveco项目 three创建分层结构 common features products移动entry到products目录 可以改名也可以不改 以后你看到 products目录续爱 default/entry 其实都是指phone设备分别在products 创建 twoInOne产品线 entry模块 .hap common 创建 har components utils data features 创建 feature.hap/.har/.hsp跨模块跳转传参entry 跳转 hsprouter.pushUrl({ url: bundle:com.samples.hspsample/library/ets/pages/Menu url: bundle:项目唯一标识就跟你身份证一样/library/ets/pages/Menu url: bundle:包名bundleName/模块名moduleName/路径/页面所在的文件名(不加.ets后缀) }) ​ 项目唯一标识就跟你身份证一样 根目录/AppScope/app.json5 bundleName com.example.three 用于后期推送消息、广告投放等等entry 跳转 har1、给har模块 加一个路由名字 Entry({ routeName: myPage }) ​ ​ 2、hap包导入命名的路由 - 2.1 配置下 开发三方库有关 - 2.2 再导入 import(ohos/library/src/main/ets/pages/Index); // 引入共享包中的命名路由页面 ​ ​ dependencies: { ohos/har1: file:../../features/har1 } ​ import(ohos/har1/src/main/ets/components/MainPage); // 引入共享包中的命名路由页面 ​ ​ ​ ​ 3、跨模块/包跳转并传参 ​ router.pushNamedRoute({ name: myPage, params: { data1: message, data2: { data3: [123, 456, 789] } } }) ​hsp、har 跳转 entryrouter.repalceUrl({ url: pages/Index })如果一个工程在同一个设备存在多个模板例如手机设备上存在entry和feature模块且模块间存在调用关系那么在调试时需要安装多个模块的hap包都设备上。此时需要在待调试模块的设置项中勾选“Deploy Multi Hap Packages”。例如entry模块调用了feature模块那么调试entry模块时需要同时安装feature模块则需要勾选“Deploy Multi Hap Packages”再启动调试。知识点总结1、MVVM M 数据模型、V Component 里面build 视图 VM组件状态、全局应用状态2、分层架构设计- 2.1 三个空目录 products entry.hap features feature.hap/har/hsp common har - 2.2 独立在每个目录创建这些模块 并且知道开发态、到编译态 hap/hsp都是独立的har根据使用方编译 让项目体积变大 - 2.3 跨模块跳转 entry hsp router.pushUrl url bundle:包名/模块名/路径/页面所在的文件名(不加.ets后缀) entry har router.pushNamedRoute hsp/har entry router.pushUrl url三、企业级面试题场景MVVM模式谈谈你对MVVM理解概率低VUEM模式主要负责数据管理V是视图主要负责页面展示VM是M和V之间的桥梁当数据变化会同步到视图HMM就是存储数据和相关逻辑的模型V在ArkUI中通常是Component装饰组件渲染的UI VM在ArkUI中ViewModel是存储在自定义组件的组件状态、和应用状态。VUE中一个文件 M代表模型 管理数据 就是响应是数据 data/ref/reactive、 V代表视图 展示数据 VM M和V之间的桥梁HM中M 之前项目写类型 types model目录 数据结构 class UserItemType V Component build 展示数据 VM State/StroageLink ​ ​ - Model针对数据库高效操作的数据模型。 - ViewModel针对ArkUI状态管理功能进行高效的UI更新的视图模型。 - 部署 converters/adapters converters/adapters作用于Model和ViewModel的相互转换。 - converters/adapters可以转换最初从数据库读取的Model来创建并初始化ViewModel。 - 在应用的使用场景中UI会通过event handler改变ViewModel此时converters/adapters需要将ViewModel的更新数据同步回Model。MVC模式三个目录前后端不分离时代M 模型 专门操作数据库的 其实就是目录专门放操作数据库的文件、 V 视图展示数据给用户其实就是一个目录 专门放前端html文件的 》 模版引擎 指定标签可以获取后端代码 C 控制器 用户访问路由 他来控制调用哪一个M 调用哪一个V鸿蒙分层架构设计/三层架构https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials_Next-BasicArchitectureDesignPart2common 公共代码 features 业主代码 products 各种设别 移动端、2和1设备、智能穿戴分层架构设计静态包har和动态包hsp的区别1、har跟随使用方编译多个使用方会生成多份相同拷贝hsp独立编译运行时在一个进程中代码也只会存在一份 2、har可以作为二方库、三方库 作为二方库发布到OHPM私仓供公司内部其他应用使用。 作为三方库发布到OHPM中心仓供其他应用使用。你了解 hsp 和 hap 包的区别吗hap 应用的功能模块可以独立安装和运行必须包含一个entry类型的HAP可选包含一个或多个feature类型的HAP。 hsp 动态共享包运行时复用。你当时做的是 hsp har 的都有跨模块跳转传参跳转hsp router.pushUrl({ url: bundle:com.samples.hspsample/library/ets/pages/Menu url: bundle:项目唯一标识就跟你身份证一样/library/ets/pages/Menu url: bundle:包名bundleName/模块名moduleName/路径/页面所在的文件名(不加.ets后缀) }) 跳转har router.pushNamedRoute({ name: myPage, params: {} })跨模块资源访问有了解过吗通过$r/$rawfile的形式引用应用资源 一样的欢迎加入课程班级考取鸿蒙认证https://developer.huawei.com/consumer/cn/training/classDetail/d43582bb30b34f548c16c127cb3be104?type1?ha_sourcehmosclassha_sourceId89000248
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

南昌哪个网站建设比较好东莞网站推广渠道有哪些

Wan2.2-T2V-A14B在艺术展览数字内容创作中的尝试 在当代艺术策展中,动态视觉表达正变得愈发关键。传统的视频制作流程——从脚本撰写、分镜设计到拍摄剪辑——往往需要数周甚至更长时间,且高度依赖专业团队协作。然而,当策展周期被压缩、创意…

张小明 2025/12/30 3:42:23 网站建设

网站开发公司基本业务流程图seo联盟平台

为什么你的Vitest测试总是神秘失败?三步解决命名冲突 【免费下载链接】vitest Next generation testing framework powered by Vite. 项目地址: https://gitcode.com/GitHub_Trending/vi/vitest 你是否遇到过这样的情况:Vitest测试明明代码逻辑正…

张小明 2025/12/29 1:23:15 网站建设

医疗网站备案网站停留时间

概述 本文报告了 rStar2-Agent 的开发和成果,这是一个专门用于数学推理的大规模语言模型。 尽管该模型的参数规模高达 140 亿个,但其性能却可与之前参数规模为 6710 亿个的模型所达到的一流水平相媲美。 这背后的原因是依赖冗长的思维链(CoT&…

张小明 2025/12/29 1:22:08 网站建设

让做网站策划没经验怎么办广西代理网站建设公司

Excalidraw浏览器兼容性测试报告(Chrome/Firefox/Safari) 在远程协作成为常态的今天,可视化工具早已不再是“锦上添花”,而是团队沟通的核心载体。无论是架构师勾勒系统蓝图,还是产品经理梳理用户流程,一张…

张小明 2025/12/29 1:21:34 网站建设

建立个人网站代码asp网站建设外文参考文献

场景:互联网大厂求职面试 在一间明亮的会议室里,面试官严肃地坐在桌子另一端,而小白程序员超好吃则有些紧张地坐在另一侧,开始了他的Java求职之旅。 第一轮提问 面试官:超好吃,你能简单解释一下Spring Boot…

张小明 2025/12/30 2:37:04 网站建设

vs网站开发 百度文库在线网页制作平台

FaceFusion实战:如何用GPU实现毫秒级人脸替换在直播滤镜、虚拟偶像和AI社交应用大行其道的今天,用户对“实时换脸”的期待早已从“能用”转向“丝滑”。你有没有遇到过这样的场景——打开一款换脸App,刚对准镜头,画面就开始卡顿掉…

张小明 2025/12/29 1:19:53 网站建设