# interview_HarmonyOS **Repository Path**: simplelife1989/interview_-harmony-os ## Basic Information - **Project Name**: interview_HarmonyOS - **Description**: 鸿蒙面试通学习项目... - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-27 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 面试通 HarmonyOS 项目架构与技术选型说明文档 --- ## 一、项目背景 “面试通”是一款基于 **HarmonyOS ArkTS** 构建的面向开发者的技术面试学习工具,具备完整的模块化设计、组件复用机制和良好的可扩展性。本项目采用现代前端开发理念,结合 HarmonyOS 生态特性,适用于教学演示、企业内部培训系统或作为二次开发的基础框架。 --- ## 二、项目整体架构图 ``` +-----------------------+ | UI 层 | | - Pages | | - Views | | - Components | +-----------------------+ ↓ +-----------------------+ | 业务逻辑层 | | - Models | | - Services/Utils | | - ViewModels | +-----------------------+ ↓ +-----------------------+ | 数据访问层 | | - APIs | | - Mock Data | | - Local Storage | +-----------------------+ ↓ +-----------------------+ | 基础设施层 | | - Constants | | - Types | | - Tools | +-----------------------+ ``` 该项目采用典型的 **分层架构模式**,通过清晰的职责划分实现模块解耦,便于团队协作与后续维护。 --- ## 三、技术选型与框架结构说明 ### 1. 开发语言:ArkTS - 使用 **ArkTS** 作为主要开发语言,它是基于 TypeScript 的声明式开发语言,适配 HarmonyOS。 - 支持装饰器语法、状态管理、组件化开发等现代前端开发特性。 - 兼容 ESM 模块规范,支持按需导入导出。 ### 2. UI 构建方式:ETS + 组件化开发 - 所有页面使用 **ETS 模块化开发**,以 `.ets` 文件组织页面结构。 - 使用 `@State`, `@Prop`, `@Link`, `@Provide`, `@Consume` 等装饰器实现组件间通信与状态同步。 - 自定义组件统一命名规范为 [Hc*](如 `HcNavBar`, `HcSearchInput`),代表 Harmony Component。 ### 3. 状态管理策略 - 项目未引入第三方状态管理库(如 Pinia 或 Redux),而是利用 ArkTS 内置的状态管理能力: - `@State`:用于组件内部状态维护 - `@Prop` / `@Link`:父子组件间数据绑定 - `@Provide` / `@Consume`:跨层级共享状态 - 对于全局状态(如用户信息、Token)通过 [commons/utils/AuthUser.ets]实现本地持久化管理。 ### 4. 网络请求封装:自定义 Request 模块 - 所有网络请求封装在 [commons/utils/Request.ets]中,支持: - GET / POST 方法封装 - 请求拦截器(添加 Token) - 错误处理(自动提示、Token 失效跳转) - 常量配置(如 BASE_URL、超时时间)在 [commons/constants/Request.ets]中统一管理。 ```typescript // 示例 import { get } from 'utils/Request' get('/api/questions') .then(data => { // 处理数据 }) .catch(err => { // 错误提示 }) ``` ### 5. 接口类型定义:TypeScript 接口 + 模块化导出 - 所有接口类型定义在 `commons/types/` 和 `models/types/` 目录中,例如: - `IQuestionType`:题目接口定义 - `ITabItem`:底部 Tab 栏定义 - `IUserData`:用户信息接口 - 在 [index.ets]中统一导出,方便其他模块引用。 ```typescript // models/types/Login.ets interface ILoginRequest { username: string password: string } interface IUserData { id: number name: string clockinNumbers: number } ``` ### 6. 资源管理:JSON 集中配置 - 所有资源文件(颜色、字符串、浮点数、图片)集中管理在 `resources/base/element/` 下: - [color.json]:颜色资源定义 - [string.json]:多语言字符串资源 - [float.json]:字体大小、间距等浮点数值 - 支持亮色/暗色主题切换,通过 [resources/dark/element/color.json]实现。 ```json // resources/base/element/color.json { "color": [ { "name": "common_main_color", "value": "#FA6D1D" }, { "name": "common_gray_bg", "value": "#f3f4f5" } ] } ``` ### 7. 页面路由与导航:内置路由 + Tabs 容器 - 所有页面入口在 `pages/` 目录下,如 [LoginPage.ets], [QuestionDetailPage.ets] - 使用 HarmonyOS 提供的路由 API 进行页面跳转: ```typescript import router from '@kit.ArkUI' router.pushUrl({ url: 'pages/LoginPage' }) ``` - 底部 Tab 切换由 `views/TabsPage/index.ets` 实现,统一管理多个子页面(首页、面经、我的等)。 ### 8. UI 设计与组件复用策略 - 所有通用组件集中在 `commons/components/`,如: - `HcSkeleton` / `HcSkeletonItem`:骨架屏组件 - `HcSearchInput`:搜索输入框 - `HcClockIn`:打卡组件 - 页面专属组件放在对应模块的 `views//components/` 下,避免组件污染。 ### 9. 日志与调试工具 - 使用 [Logger.ets]封装日志打印功能,支持控制台输出级别控制。 - 使用 [ShowToast.ets]封装统一的 Toast 提示,支持不同类型的提示样式(成功、警告、错误等)。 ```typescript // ShowToast.ets export const showToast = (msg: string, type?: EToastTypeColor) => { promptAction.showToast({ message: msg, duration: 2000, bottom: 100, backgroundColor: type || '#666666' }) } ``` ### 10. 权限与用户鉴权 - 用户权限校验封装在 `AuthUser.ets` 中,提供如下功能: - 登录状态检测 - Token 持久化存储与读取 - 路由权限控制(如点击扫码前判断是否登录) ```typescript authUser.authRoutePermission(() => { router.pushUrl({ url: 'pages/LoginPage' }) }) ``` --- ## 四、测试体系说明 ### 1. 单元测试(test/) - 包含基础工具类、列表渲染逻辑等测试 - 示例:`List.test.ets`, `LocalUnit.test.ets` ### 2. 设备端测试(ohosTest/ets/test/) - 包括 Ability 生命周期测试、页面交互测试 - 示例:`Ability.test.ets` --- ## 五、部署与运行环境 ### 1. 开发环境要求 - HarmonyOS SDK - DevEco Studio 3.x - Node.js 14+ ### 2. 运行项目步骤 1. 克隆仓库 2. 打开 DevEco Studio,导入项目 3. 选择模拟器或真机运行 --- ## 六、项目优势总结 | 优势 | 说明 | |------|------| | 技术栈先进 | 使用 ArkTS + ETS 构建,符合 HarmonyOS 最佳实践 | | 结构清晰 | 分层架构明确,便于团队协作与后期维护 | | 可扩展性强 | 新增模块只需添加 views 和 models 即可 | | 类型安全 | 所有接口均通过 `.types` 定义,增强可维护性 | | 测试覆盖完整 | 包含单元测试和设备端测试,确保质量 | | 主题支持完善 | 支持亮/暗色界面切换,提升用户体验 | ---