HarmonyOS鸿蒙Next开发案例:旅游行业官方模板介绍 (Part1:民宿住宿应用模板)

HarmonyOS鸿蒙Next开发案例:旅游行业官方模板介绍 (Part1:民宿住宿应用模板) 鸿蒙生态市场

💡摘要: 本模板来自华为生态市场(Huawei Partner Market),本文选取了旅游行业的一个官方模板——民宿住宿应用模板,并进行了简要的介绍与分析。各位开发者伙伴们,更多行业模板与组件请进入生态市场查看!

一、概述

  1. 行业洞察(待补充) 1)行业痛点

  2. 优秀案例概览 基于以上行业分析,本期将介绍鸿蒙生态市场旅游行业模板——民宿住宿应用模板,为行业提供常用功能的开发案例,模板主要分首页、发现、地图、商城和我的五大模块

    • Stage开发模型 + 声明式UI开发范式
    • 分层架构设计 + 组件化拆分,支持开发者在开发时既可以选择完整使用模板,也可以根据需求单独选用其中的业务组件
    • 本模板已集成华为账号、通话、地图、华为支付等服务,只需做少量配置和定制即可快速实现华为账号的登录、一键拨打服务电话、民宿位置定位导航、订房下单、购买商品等功能
首页 发现 地图 商城 我的
首页 发现 地图 商城 我的

本模板主要页面及核心功能如下所示:

民宿旅游
 |-- 首页
 |    |-- 顶部轮播
 |    |-- 民宿信息
 |    |    └-- 民宿基本信息
 |    |-- 入离时间
 |    |    └-- 入离时间选择
 |    |-- 热门房型
 |    |    |-- 热门房型详情
 |    |         └-- 热门房型下单
 |    |    |-- 全部房型
 |    |         └-- 房型详情
 |    |              └-- 房型下单
 |-- 发现
 |    └-- 发现列表
 |         └-- 发现详情
 |         └-- 发现搜索
 |-- 地图
 |    └-- 民宿信息
 |    └-- 民宿导航
 |-- 商城
 |    └-- 商品列表
 |         └-- 商品详情
 |              └-- 商品下单
 └-- 我的
      |-- 我的订单
      |    └-- 住宿订单
      |    └-- 商品订单
      |-- 常用旅客
      |    └-- 游客列表
      |         └-- 新增游客 
      |-- 客服
      |    └-- 常见问题列表
      └-- 投诉建议
           └-- 新增投诉建议

二、应用架构设计

1. 分层模块化设计

  • **产品定制层:**专注于满足不同设备或使用场景的个性化需求,作为应用的入口,是用户直接互动的界面。
    • 本实践暂时只支持直板机,为单HAP包形式,包含路由根节点、底部导航栏等。
  • **基础特性层:**用于存放相对独立的功能UI和业务逻辑实现。
    • 本实践的基础特性层将应用底部导航栏的每个选项拆分成一个独立的业务功能模块。
    • 每个功能模块都具备高内聚、低耦合、可定制的特点,支持产品的灵活部署。
  • **公共能力层:**存放公共能力,包括公共UI组件、数据管理、外部交互和工具库等共享功能。
    • 本实践的公共能力层分为公共基础能力和可分可合组件,均打包为HAR包被上层业务组件引用。
    • 公共基础能力包含日志、文件处理等工具类,公共类型定义,网络库,以及弹窗、加载等公共组件。
    • 可分可合组件将包含行业特点、可完全自闭环的能力抽出独立的组件模块,支持开发者在开发中单独集成使用,详见业务组件设计章节。

分层模块化设计

本模板详细工程结构可见工程结构章节。

2. 业务组件设计

为支持开发者单独获取特定场景的页面和功能,本模板将功能完全自闭环的部分能力抽离出独立的行业组件模块,不依赖公共基础能力包,开发者可以单独集成,开箱即用,降低使用难度。

业务组件设计

三、行业场景技术方案(待补充)

  1. 账号管理 1)场景说明 2)技术方案
  2. 民宿信息 1)场景说明 2)技术方案
  3. 地图 1)场景说明 2)技术方案
  4. 热门房型 1)场景说明 2)技术方案

四、模板代码

1. 工程结构

详细代码结构如下所示:

HomeStay
  |- common                                       // 公共层                                      
  |  |- component/src/main/ets/pages              // 公共组件模块(har)
  |  |    |- AgreementDialog.ets                  // 用户协议弹窗 
  |  |    |- CommonBlank.ets                      // 公共空白组件 
  |  |    |- PaySuccess.ets                       // 支付成功组件
  |  |    └- TitleBar.ets                         // 标题组件
  |  |    └- ConfirmDialog.ets                    // 公共确认弹窗
  |  |- constant/src/main/ets                     // 公共模块(har)
  |  |     |- common 
  |  |          Constants.ets                     // 公共常量             
  |  └- type/src/main/ets                         // 类型定义模块(har)
  |  |      |- models                             // 公共类型   
  |  └- util/src/main/ets                         // 工具模块(har) 
  |        |- utils                               // 工具类
  |  |          Index.ets                         // 公共方法类
  |  |          LazyDataSource.ets                // 懒加载公共类 
  |  |          Logger.ets                        // 日志类 
  |  |          ObservedArray.ets                 // 懒加载公共类 
  |  |          Storage.ets                       // 本地状态管理类 
  |
  |- main                                         // 主包(hap) 
  |  └- main/src/main/ets                                                                             
  |        |- entryability                                                                                                                            
  |        |- pages                              
  |        |    Main.ets                          // 主页面
  |        |    CustomTabBar.ets                  // 导航栏自定义页面
  |        |- model                               // 类型定义
  |        |- viewmodel                           // 与页面一一对应的vm层          
  |      
  |- components                                   // 可分可合组件层
  |   |- calendar_select/src/main/ets             // 日历组件(har)
  |   |    |- components                          // 组件页面
  |   |    |    CustomCalendarPickerDialog.ets    // 日历弹窗
  |   |    |    DateInfo.ets                      // 日历组件 
  |   |    |- constant                            // 日历组件常量
  |   |    |- model                               // 日历组件模型  
  |   |    |- utils                               // 日历组件工具类             
  |   |    
  |   |- travel_discovery/src/main/ets            // 游记组件(har)
  |   |    |- components                          // 组件
  |   |    |    ContentCard.ets                   // 游记卡片  
  |   |    |- constant                            // 游记组件常量
  |   |    |- model                               // 游记组件模型     
  |   |    |- pages                              
  |   |    |    PageDetail.ets                    // 游记详情页面
  |   |    |    PageSearch.ets                    // 游记搜索页面
  |   |    |    PageWaterFlow.ets                 // 游记瀑布流页面
  |   |    └- utils                               // 日历工具类 
  |   |- travel_map/src/main/ets                  // 地图组件(har)
  |   |    |- components                          // 组件页面
  |   |    |    Map.ets                           // 地图  
  |   |    |- model                               // 地图组件模型
                                           
  |- function                                     // 特性层
  |   |- account/src/main/ets                     // 账号维护模块(hsp)
  |   |    |- AccountUtil                         // 账号信息维护类                  
  |   |
  |   |- network/src/main/ets                     // 网络请求模块(hsp)
  |   |    |- api                                 // 接口请求方法类   
  |   |    |- mock                                 
  |   |    |    Mock.ets                          // mock数据
  |   |    |- models                              // class类型定义    
  |   |    |- types                               // 接口类型定义      
  |   |
  |- tab                                          // tab特性层
  |   |- discovery/src/main/ets                   // 发现模块(har)
  |   |    |- components                          // 抽离组件
  |   |    |    ContentCard.ets                   // 发现卡片组件
  |   |    |- constant                              
  |   |    |    Index.ets                         // 常量
  |   |    |- model      
  |   |    |    Index.ets                         // 模型
  |   |    |    IRequest.ets                      // 请求模型
  |   |    |    IResponse.ets                     // 返回模型
  |   |    |- pages                              
  |   |    |    PageSearch.ets                    // 发现搜索页
  |   |    |    PageDetail.ets                    // 发现详情页
  |   |    |    PageWaterFlow.ets                 // 发现列表页
  |   |    └- util                                // 请求工具
  |   |- home/src/main/ets                        // 首页模块(hsp)
  |   |    |- components                          // 抽离组件 
  |   |    |- model                               // class类型定义 
  |   |    |- mapper                              // 类型映射
  |   |    |- pages                              
  |   |    |    Home.ets                          // 首页
  |   |    |    Hotel.ets                         // 民宿信息页
  |   |    |    HotelDetail.ets                   // 民宿详情页
  |   |    |    Reserve.ets                       // 民宿预订页
  |   |    |    Rooms.ets                         // 房型列表页
  |   |    └- viewmodel                           // 与页面一一对应的vm层   
  |   |- map/src/main/ets                         // 地图模块(hsp)
  |   |    |- pages                              
  |   |    |    MapPage.ets                       // 地图展示页
  |   |- personal/src/main/ets                    // 我的模块(hsp)
  |   |    |- components                          // 抽离组件 
  |   |    |- model                               // class类型定义 
  |   |    |- pages                              
  |   |    |    About.ets                         // 关于我们页
  |   |    |    AddGuest.ets                      // 添加旅客页
  |   |    |    CommodityOrderDetail.ets          // 商品订单详情页
  |   |    |    Complaint.ets                     // 反馈建议页
  |   |    |    Customer.ets                      // 客服页
  |   |    |    Guests.ets                        // 旅客列表页
  |   |    |    OrderList.ets                     // 订单列表页
  |   |    |    OtherService.ets                  // 其他服务页
  |   |    |    Personal.ets                      // 我的页
  |   |    |    PersonalInfo.ets                  // 个人信息页
  |   |    |    RoomOrderDetail.ets               // 住宿订单页
  |   |    |    PrivacyPolicyPage.ets             // 隐私政策页
  |   |    |    QuickLoginPage.ets                // 住宿订单页
  |   |    |    TermsOfServicePage.ets            // 用户协议页
  |   |    └- viewmodel                           // 与页面一一对应的vm层    
  |   |- shop/src/main/ets                        // 商城模块(hsp)
  |   |    |- components                          // 抽离组件 
  |   |    |- model                               // class类型定义 
  |   |    |- mapper                              // 接口数据到页面数据类型映射
  |   |    |- pages                              
  |   |    |    CommodityDetail.ets               // 商品详情页
  |   |    |    CommodityList.ets                 // 商品列表页
  |   |    |    Purchase.ets                      // 商品购买页
  |   |    |    Shop.ets                          // 商城页
  |   |    └- viewmodel                           // 与页面一一对应的vm层           

2. 关键代码解读(待补充)

  • 待补充

3. 模板集成

本模板提供了两种代码集成方式,供开发者自由使用。

1)整体集成 开发者可以选择直接基于模板工程开发自己的应用工程。

  • 模板代码获取:

  • 打开模板工程,根据README说明中的快速入门章节,将自己的应用信息配置在模板工程内,即可运行并查看模板效果。 ![快速入门](https://alliance-communityfile-drc


更多关于HarmonyOS鸿蒙Next开发案例:旅游行业官方模板介绍 (Part1:民宿住宿应用模板)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

鸿蒙Next的民宿住宿应用模板基于ArkTS开发,提供旅游行业标准化UI组件与功能模块。该模板包含房源展示、地图定位、订单管理、支付对接等核心功能,采用声明式开发范式实现界面布局。数据管理使用鸿蒙分布式能力实现多设备同步,支持FA(Feature Ability)独立开发与组合。模板集成华为地图服务、统一扫码等开放能力,符合鸿蒙设计规范。性能优化方面采用异步加载和组件复用机制,确保流畅体验。

更多关于HarmonyOS鸿蒙Next开发案例:旅游行业官方模板介绍 (Part1:民宿住宿应用模板)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个民宿住宿应用模板展示了HarmonyOS Next在旅游行业的典型开发实践,具有以下技术亮点:

  1. 架构设计方面采用分层模块化方案:
  • 产品定制层处理设备适配
  • 基础特性层实现核心业务逻辑
  • 公共能力层封装通用组件和服务 这种设计支持灵活的功能组合与复用。
  1. 业务组件设计突出可插拔特性:
  • 日历选择、游记展示、地图导航等组件可独立集成
  • 每个组件都是功能完备的HAR包
  • 开发者可按需选用特定场景能力
  1. 深度集成华为生态服务:
  • 华为账号实现快速登录
  • 地图服务提供定位导航
  • 支付服务完成交易闭环 这些服务通过简单配置即可调用。
  1. 工程结构清晰规范:
  • 公共代码抽离为独立模块
  • 业务逻辑分层明确
  • 类型定义统一管理 便于团队协作和维护。

该模板既可作为完整项目参考,也能作为组件库使用,有效降低旅游类应用的开发门槛。

回到顶部