鸿蒙生态市场
摘要: 本模板来自华为生态市场(Huawei Partner Market),本文选取了生活服务类行业的一个官方模板——日历应用模板,并进行了简要的介绍与分析。各位开发者伙伴们,更多行业模板与组件请进入生态市场查看!
一、概述
行业洞察(待补充)
1)行业痛点
优秀案例概览
基于以上行业分析,本期将介绍鸿蒙生态市场生活服务类行业模板——日历应用模板,为行业提供常用功能的开发案例,模板主要分为万年历、黄历、和我的三大模块
Stage开发模型 + 声明式UI开发范式
分层架构设计 + 组件化拆分,支持开发者在开发时既可以选择完整使用模板,也可以根据需求单独选用其中的业务组件
本模板已集成华为账号等服务,只需做少量配置和定制即可快速实现华为账号的登录
万年历黄历我的本模板主要页面及核心功能如下所示:
日历模板
|
| |
| |
| |
| |
| └
|
| |
| |
| |
| |
└
| |
| └
| └
| └
| └
二、应用架构设计
1. 分层模块化设计产品定制层:专注于满足不同设备或使用场景的个性化需求,作为应用的入口,是用户直接互动的界面。
本实践暂时只支持直板机,为单HAP包形式,包含路由根节点、底部导航栏等。基础特性层:用于存放相对独立的功能UI和业务逻辑实现。
本实践的基础特性层将应用底部导航栏的每个选项拆分成一个独立的业务功能模块。
每个功能模块都具备高内聚、低耦合、可定制的特点,支持产品的灵活部署。
公共能力层:存放公共能力,包括公共UI组件、数据管理、外部交互和工具库等共享功能。
本实践的公共能力层分为公共基础能力和可分可合组件,均打包为HAR包被上层业务组件引用。公共基础能力包含日志、文件处理等工具类,公共类型定义,网络库,以及弹窗、加载等公共组件。可分可合组件将包含行业特点、可完全自闭环的能力抽出独立的组件模块,支持开发者在开发中单独集成使用,详见业务组件设计章节。本模板详细工程结构可见工程结构章节。
2. 业务组件设计为支持开发者单独获取特定场景的页面和功能,本模板将功能完全自闭环的部分能力抽离出独立的行业组件模块,不依赖公共基础能力包,开发者可以单独集成,开箱即用,降低使用难度。
三、行业场景技术方案(待补充)
个人信息
1)场景说明
2)技术方案
黄历
1)场景说明
2)技术方案
万年历
1)场景说明
2)技术方案
节日节气
1)场景说明
2)技术方案
四、模板代码
1. 工程结构详细代码结构如下所示:
Application
├──├──commons
│ ├──common // 公共能力层
│ ├──src/main/ets // 基础能力
│ │ └──components // 公共组件
│ │ └──dividerTmp // 下划线公共组件
│ │ └──https // 网络请求库
│ │ └──models // 公共接口常量
│ │ └──quickLogin // 华为账号一键登录
│ │ └──style // 公共样式
│ │ └──utils // 工具类
│ │ └──viewmodels // 接口层
│ └──Index.ets // 对外接口类
│ ├──router_module // 全局路由组件
├──├──components // 公共组件
│ ├──base_apis // 通用组件(模态框,弹窗,选择器等)
│ ├──base_calendar // 日历组件
│ ├──calendar_almanac // 黄历组件
│ ├──calendar_events // 重要提醒组件
│ ├──date_calculation // 日期计算组件
│ ├──festival_solar // 节日节气组件
│ ├──login_info // 登录组件组件
│ ├──vip_center // 开通会员组件
│ ├──traffic_restriction // 城市限行组件
│ ├──yiji_query // 宜忌查询组件
├──features // 基础特性层
│ ├──almanac/src/main/ets // 黄历
│ │ ├──pages // 首页入口
│ │ ├──AlmanacView // 黄历入口
│ ├──almanac/src/main/resources // 资源文件目录
│ ├──almanac/Index.ets // 对外接口类
│ ├──perpetual/src/main/ets // 万年历
│ │ ├──components // 万年历组件
│ │ ├──pages
│ │ ├──PerpetualCalendar // 万年历组件入口
│ ├──perpetual/src/main/resources // 资源文件目录
│ ├──perpetual/Index.ets // 对外接口类
│ ├──mine/src/main/ets // 我的(包含一键登录)
│ │ └──pages // 我的入口页
│ │ ├──MinePage // 登录
│ │ └──components // 我的页面入口
│ └──mine/src/main/resources // 资源文件目录
└─product/entry/src/main
├─ets
│ ├─widget
│ │ ├──pages
│ │ ├──WidgetCard.ets // 服务卡片
│ ├─entryability
│ │ ├──EntryAbility.ets // 应用程序入口
│ ├─page
│ │ ├──Index.ets // 入口
│ │ ├──PrivacyPage.ets // 隐私协议
│ │ ├──SafePage.ets // 隐私协议弹窗
│ │ ├──SplashPage.ets // 闪屏页
│ │ ├──TabContainer.ets // tab页入口
└─resources
2. 关键代码解读(待补充) 待补充 3. 模板集成本模板提供了两种代码集成方式,供开发者自由使用。
1)整体集成
开发者可以选择直接基于模板工程开发自己的应用工程。
模板代码获取:
通过IDE插件创建模板工程,开发指导。通过生态市场下载源码, 下载地址。通过开源仓访问源码,仓库地址。打开模板工程,根据README说明中的快速入门章节,将自己的应用信息配置在模板工程内,即可运行并查看模板效果。
对接开发者自己的服务器接口,转换数据结构,展示真实的云侧数据。
将commons/lib_common/src/main/ets/httprequest/HttpRequestApi.ets文件中的mock接口替换为真实的服务器接口。
在commons/lib_common/src/main/ets/httprequest/HttpRequest.ets文件中将云侧开发者自定义的数据结构转换为端侧数据结构。
根据自己的业务内容修改模板,进行定制化开发。
2)按需集成
若开发者已搭建好自己的应用工程,但暂未实现其中的部分场景能力,可以选择取用其中的业务组件,集成在自己的工程中。
组件代码获取:
通过IDE插件创建模板工程,开发指导。通过生态市场下载源码, 下载地址。下载组件源码,根据README中的说明,将组件包配置在自己的工程中。
根据API参考和示例代码,将组件集成在自己的对应场景中。