HarmonyOS鸿蒙Next开发案例出行导航类行业官方模板介绍 (Part1:公交应用模板)

HarmonyOS鸿蒙Next开发案例出行导航类行业官方模板介绍 (Part1:公交应用模板) 鸿蒙生态市场


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


一、概述

  1. 行业洞察

    1)行业痛点:

    • **线路信息不准确:**实时到站数据延迟或错误,导致用户错过车辆或长时间等待
    • **个性化服务缺失:**缺乏根据用户通勤习惯(如最短时间/最少换乘/无障碍需求)的智能路线规划
    • **支付体验割裂:**需切换多个APP完成扫码、换乘优惠或跨城公交支付
    • **数据未联动利用:**用户出行偏好与城市交通流量数据未结合优化线路规划
    • **应急服务不足:**突发情况(改线/故障)无实时通知,缺少车内安全预警功能

  2. 优秀案例概览

    基于以上行业分析,本期将介绍鸿蒙生态市场出行导航类行业模板——公交应用模板,为行业提供常用功能的开发案例,涵盖实时公交、路线规划、乘车码、失物招领等多个实用功能。

    • Stage开发模型 + 声明式UI开发范式
    • 分层架构设计 + 组件化拆分,支持开发者在开发时既可以选择完整使用模板,也可以根据需求单独选用其中的业务组件
    • 集成华为账号、支付等服务,只需做少量配置和定制即可快速实现华为账号的登录、乘车购票等功能
首页 出行-实时公交 出行-路线规划
首页 出行-实时公交 出行-路线规划
乘车码 我的
乘车码 我的

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

公交出行模板
 |-- 首页
 |    |-- 轮播图
 |    |-- 新闻热点
 |    |     |-- 新闻列表
 |    |     └-- 新闻详情
 |    |-- 乘车码
 |    |-- 禁携物品
 |    └-- 失物招领
 |-- 出行
 |    |-- 实时公交
 |    |     |-- 搜索
 |    |     |-- 附近公交列表
 |    |     └-- 公交详情页
 |    └-- 路线规划
 |          |-- 搜索
 |          └-- 推荐路线
 |-- 乘车码
 |    |-- 领取电子卡
 |    |-- 开通电子卡
 |    └-- 乘车码
 └-- 我的
      |-- 登录
      |-- 个人信息
      |-- 我的钱包
      |-- 我的订单
      |-- 设置
      |-- 联系客服
      |-- 隐私管理
      |     └-- 隐私服务
      └-- 关于我们
            |-- 意见建议
            └-- 版本更新

二、应用架构设计

1. 分层模块化设计

  • **产品定制层:**专注于满足不同设备或使用场景的个性化需求,作为应用的入口,是用户直接互动的界面。

    • 本实践暂时只支持直板机,为单HAP包形式,包含路由根节点、底部导航栏等。
  • **基础特性层:**用于存放相对独立的功能UI和业务逻辑实现。

    • 本实践的基础特性层将应用底部导航栏的每个选项拆分成一个独立的业务功能模块。
    • 每个功能模块都具备高内聚、低耦合、可定制的特点,支持产品的灵活部署。
  • **公共能力层:**存放公共能力,包括公共UI组件、数据管理、外部交互和工具库等共享功能。

    • 本实践的公共能力层分为公共基础能力和可分可合组件,均打包为HAR包被上层业务组件引用。
    • 公共基础能力包含日志、文件处理等工具类,公共类型定义,网络库,以及弹窗、加载等公共组件。
    • 可分可合组件将包含行业特点、可完全自闭环的能力抽出独立的组件模块,支持开发者在开发中单独集成使用,详见业务组件设计章节。

分层模块化设计

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


2. 业务组件设计

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

业务组件设计


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

  1. 账号管理 1)场景说明 2)技术方案

  2. 实时公交 1)场景说明 2)技术方案

  3. 路线规划 1)场景说明 2)技术方案

  4. 乘车码 1)场景说明 2)技术方案

四、模板代码

1. 工程结构

详细代码结构如下所示:

BusTravel
├─common/src/main/ets
│  ├─AxiosHttpRequest                                  // 网络请求封装
│  ├─components                                        // 细化业务组件
│  ├─constants                                         // 公共常量
│  ├─Interface                                         // 公共接口常量
│  ├─logger                                            // 日志打印
│  ├─model                                             // 模型定义
│  ├─page                                              // 公共页面
│  └─utils                                             // 公共方法
├─components                                           // 组件
│  ├─route_detail                                      // 公交详情路线展示组件
│  ├─route_search                                      // 公交路线搜索组件  
|
├─entry
│  ├─src/main/ets
│  │  ├─constants
│  │  │  └─AppConstants.ets                            // 常量定义
│  │  ├─dataModel
│  │  │  └─HomeTab.ets                                 // Tab页定义
│  │  ├─entryability
│  │  │  └─EntryAbility.ets                            // 主入口生命周期(包含预加载)
│  │  ├─entrybackupability
│  │  │  └─EntryBackupAbility.ets                      // 主入口生命周期(包含预加载)
│  │  ├─pages
│  │  │  └─Index.ets                                   // 主页
│  │  └─viewmodels
│        └─EntryVM.ets                                 // 路由管理
├─feature
│  ├─CodeScan/src/main/ets
│  │  └─index
│  │     ├─ActivateCloudCard.ets                       // 常量定义
│  │     ├─CloudCard.ets                               // 模型定义
│  │     └─CodeScanPage.ets                            // 方法定义
│  ├─frontpage/src/main/ets
│  │  ├─mock
│  │  │  └─MockData.ets                                // mock数据
│  │  ├─model
│  │  │  └─Interface.ets                               // 接口定义
│  │  └─pages
│  │     ├─HomePage.ets                                // 首页
│  │     ├─LostFind.ets                                // 失物招领
│  │     ├─NewsDetail.ets                              // 新闻详情
│  │     ├─NewsHotspot.ets                             // 新闻热点
│  │     └─ProhibitedItemsPage.ets                     // 禁携物品
│  ├─PersonalCenter/src/main/ets
│  │  ├─components
│  │  │  └─PageHeader.ets                              // 页面标题栏组件
│  │  ├─model                                          // 模型定义
│  │  └─pages
│  │     ├─AboutUs.ets                                 // 关于我们
│  │     ├─index.ets                                   // 首页
│  │     ├─Login.ets                                   // 华为一键登录
│  │     ├─MinePage.ets                                // 个人中心主页面
│  │     ├─MineWallet.ets                              // 我的钱包
│  │     ├─MyOrder.ets                                 // 我的订单
│  │     ├─PersonalSetting.ets                         // 个人设置
│  │     ├─PrivacyPage.ets                             // 隐私协议
│  │     ├─SettingsPage.ets                            // 设置页面
│  │     └─Suggestion.ets                              // 意见建议
│  └─RouteDesign/src/main/ets
│     ├─components
│     │  ├─BusInfo.ets                                 // 公交列表组件
│     │  ├─BusLine.ets                                 // 公交地图信息组件
│     │  ├─BusLineView.ets                             // 公交附图站点展示组件
│     │  ├─BusStationRandom.ets                        // 站点信息
│     │  └─RandomCountdown.ets                         // 站点信息
│     ├─constants
│     │  └─MapConstants.ets                            // 常量
│     ├─index
│     │  └─index.ets                                   // 主页
│     ├─page
│     │  ├─BusLinePlan.ets                             // 出行页
│     │  ├─realTimeBus.ets                             // 实时公交
│     │  ├─routeDetailPage.ets                             // 公交地图详情页
│     │  └─TravelPlan.ets                              // 路径规划
│     └─viewmodels
│        └─RouterParams.ets                            // 路由参数

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

  • 待补充

3. 模板集成

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

1)整体集成

开发者可以选择直接基于模板工程开发自己的应用工程。

  • 模板代码获取:

  • 打开模板工程,根据README说明中的快速入门章节,将自己的应用信息配置在模板工程内,即可运行并查看模板效果。 模板集成

  • 对接开发者自己的服务器接口,转换数据结构,展示真实的云侧数据。

    • 将commons/lib_common/src/main/ets/httprequest/HttpRequestApi.ets文件中的mock接口替换为真实的服务器接口。 接口替换
    • 在commons/lib_common/src/main/ets/httprequest/HttpRequest.ets文件中将云侧开发者自定义的数据结构转换为端侧数据结构。 数据结构转换
  • 根据自己的业务内容修改模板,进行定制化开发。


2)按需集成

若开发者已搭建好自己的应用工程,但暂未实现其中的部分场景能力,可以选择取用其中的业务组件,集成在自己的工程中。


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

2 回复

HarmonyOS Next公交应用模板基于ArkTS开发,提供出行导航类应用核心功能。模板集成地图组件、路线规划、实时公交查询及到站提醒功能,支持跨设备协同和原子化服务。采用Stage模型开发,通过分布式数据管理实现多端数据同步。UI组件适配不同设备屏幕,支持一次开发多端部署。模板已优化资源调度和功耗管理,符合鸿蒙生态规范。

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


该公交应用模板基于HarmonyOS Next的Stage模型和声明式UI开发,采用分层架构设计,支持模块化开发与灵活集成。模板针对出行导航行业痛点,提供了实时公交、路线规划、乘车码等核心功能,并集成了华为账号与支付服务,便于快速开发。开发者可选择整体集成或按需使用特定业务组件,通过替换Mock数据对接真实服务接口实现定制化开发。工程结构清晰,公共能力层封装了网络请求、日志等基础功能,业务组件设计支持独立部署,降低了开发复杂度。

回到顶部