随着校园数字化建设的深入,师生对移动端服务的需求日益增长。为了提升校园服务的便捷性与可扩展性,本项目采用H5 + 原生混合开发模式,开发校园类 App。
背景:纯原生开发周期长、跨平台成本高,而纯 H5 体验受限、无法深度调用系统能力。混合开发模式可兼顾开发效率与原生体验,同时便于快速迭代功能。
目标:
实现核心校园服务(如教务查询、校园卡充值、通知推送、门禁扫码等)的 H5 页面开发。
建立稳定的 H5 与原生交互机制,实现跨平台调用摄像头、定位、本地存储、推送等原生能力。
提升用户体验,降低开发与维护成本,支持多端(iOS/Android)统一部署。
一、整体架构和设计思路,不同模块使用的技术栈
本项目采用混合开发架构(Hybrid),核心遵循 “原生为壳、H5 为核” 的设计思路,搭建 “底层原生支撑 + 中层桥接通信 + 上层 H5 业务” 的三级架构,实现跨 iOS/Android 平台的校园服务交付,兼顾开发效率与原生体验。
架构设计核心:采用分层解耦思想,原生层负责系统能力调用与全局状态管理,桥接层实现 H5 与原生的双向通信标准化,H5 层聚焦业务逻辑与页面渲染,各层通过统一接口交互,降低耦合度。
技术栈选型
H5 前端层:核心框架使用 Vue 3 + Vite,保证页面轻量化与编译效率;路由管理采用 Vue Router,实现 H5 页面无刷新跳转;状态管理使用 Pinia,统一管理用户信息、校园服务状态等全局数据;UI 组件库选用 Vant 4,适配移动端交互与校园场景视觉需求;请求封装采用 Axios,实现与后端接口的稳定通信。
桥接通信层:基于 JSBridge 技术封装统一交互接口,iOS 端采用 WKWebView 的evaluateJavaScript方法实现原生调用 H5,通过WKScriptMessageHandler监听 H5 调用;Android 端采用 WebView 的addJavascriptInterface注入接口,结合onJsPrompt拦截 H5 请求,最终封装为跨平台的NativeBridge工具类。
原生适配层:iOS 端基于 Swift 开发,Android 端基于 Kotlin 开发,核心负责摄像头、定位、支付、推送等系统能力的封装,以及 H5 页面的容器承载与生命周期管理。
二、“我” 的负责模块和结果(量化)
作为前端核心开发人员,我独立负责 H5 前端业务开发、JSBridge 通信层封装,以及原生与 H5 的联调适配,具体工作与量化成果如下:
核心业务 H5 开发:完成校园卡服务、教务查询、通知公告 3 大核心模块的 H5 页面开发,累计开发页面 28 个,实现了课表展示、成绩查询、校园卡充值、消费记录统计等 16 项核心功能。
通信层封装:设计并实现标准化的 JSBridge 交互库,封装callNative(H5 调原生)、onNativeCallback(原生回调 H5)、listenNativeEvent(监听原生主动事件)3 大核心方法,覆盖扫码、定位、支付、文件上传等 8 类原生能力调用场景。
联调与优化:完成与 iOS、Android 原生开发的全流程联调,解决交互兼容性问题 12 个;针对 H5 页面在原生容器中的加载性能进行优化,将首屏加载时间从 1.8 秒缩短至 0.6 秒,页面切换卡顿率降至 0;最终实现 H5 与原生交互成功率 100%,支撑 App 核心功能稳定上线。
三、“我” 遇到的难点、坑,和解决方案
难点 1