当前位置: 首页 > news >正文

OpenHarmony 英语学习 App 实战:从 0 到 1 搭建中小学生英语学习应用

OpenHarmony 英语学习 App 实战:从 0 到 1 搭建中小学生英语学习应用

摘要

本文从整体架构角度,复盘我的 OpenHarmony/HarmonyOS 英语学习项目「英语视界 YingYu」是如何从 0 到 1 搭建起来的。相比单点功能文章,这篇更适合做项目介绍型 CSDN 文章:讲清楚产品定位、技术栈、页面结构、数据模型、学习功能、全场景能力和 AI 扩展方向。🚀

项目技术栈:

OpenHarmony/ HarmonyOS ArkTS + ArkUI Hvigor 构建 AppStorage + Preferences DistributedKVStore ShareKit CoreSpeechKit TTS Node.js + Express + Prisma 后端预留

一、项目定位

「英语视界 YingYu」是一款面向中国中小学生的英语学习 App,目标是帮助用户通过碎片化、游戏化和复习驱动的方式学习英语。

核心功能包括:

  • 词汇学习;
  • 听力训练;
  • 每日一句;
  • 趣味英语;
  • 语法专题;
  • 短语学习;
  • 自定义生词本;
  • 艾宾浩斯复习;
  • 学习目标;
  • 学习日历;
  • 成就系统;
  • 近场分享;
  • 跨设备续学;
  • TTS 朗读;
  • AI 接口预留。

项目不是一个简单 Demo,而是围绕真实学习流程组织的完整应用。

二、工程目录结构

ArkTS 端核心代码位于:

entry/src/main/ets/├── entryability/ │ └── EntryAbility.ets ├── pages/ ├── components/ ├── data/ ├── model/ ├── utils/ └── styles/

各目录职责:

  • pages:页面;
  • components:通用组件;
  • data:内置词汇、听力、语法、每日一句;
  • model:数据模型;
  • utils:存储、复习、分享、设备适配、TTS;
  • styles:颜色和设计 token;
  • entryability:应用生命周期。

这种分层适合中型 ArkUI 项目,页面和业务工具不会混在一起。

三、入口 Ability 设计

应用从EntryAbility.ets启动,负责初始化用户数据、分布式同步和加载主页面。

onCreate(want: Want,launchParam: AbilityConstant.LaunchParam): void { this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET)initYingYuUserData(this.context)initDistributedStore(this.context).then(()=> { hilog.info(DOMAIN, 'testTag', 'Distributed sync initialized') }) }

窗口创建时加载新版首页:

windowStage.loadContent('pages/MainTabsV2',(err)=>{if(err.code) { windowStage.loadContent('pages/MainTabs',()=>{})return} })

入口层主要负责全局初始化,不承载具体页面业务。

四、页面注册

页面列表在main_pages.json中配置:

{ "src": ["pages/Index","pages/Home","MainTabs","pages/MainTabsV2","pages/Vocabulary","pages/VocabularyDetail","pages/DailySentence","pages/Listening","pages/FunEnglish","pages/FunEnglishDetail","pages/StudyProgress","pages/Settings","pages/CustomWordBook","pages/ReviewCenter","pages/DailyTask","pages/LearningCalendar","pages/LearningGoals","pages/Grammar","pages/PhraseStudy","pages/ShareGuide","pages/ShareCenter"] }

从页面数量可以看出,这个项目已经覆盖学习 App 的主要闭环。

五、数据模型设计

项目中使用DataModels.ts集中定义模型。

词汇:

export interface Word {id:numberword:stringphonetic:stringtranslation:stringexample:stringexampleTranslation:stringgrade:number}

学习进度:

exportinterfaceLearningProgress {date:stringwordsLearned:numberminutesSpent:numbercompleted:boolean}

自定义单词:

export interface CustomWord {id:stringword:stringphonetic?:stringtranslation:stringexample?:stringtags:string[] createdAt:stringreviewCount:numbermastered:boolean}

先定义模型,再写页面,可以让项目结构更稳定。

六、首页:学习驾驶舱

首页HomeContent.ets不只是入口集合,而是学习驾驶舱。

build() { Scroll() { Column() {this.WelcomeSection()this.DailyRecommendCard()this.QuickAccessSection()this.FunEnglishPickSection()this.ListeningRecommendSection()this.FeatureGrid()this.StatisticsCard() } } }

首页展示:

  • 当前年级;
  • 每日一句;
  • 快捷入口;
  • 趣味英语;
  • 听力推荐;
  • 学习统计。

这让用户打开 App 后能直接进入学习状态。

七、核心学习模块

词汇学习

词汇数据按年级组织,覆盖小学到高中。每个单词包含音标、释义、例句和年级。

听力训练

听力材料按难度分类,配合 TTS 可实现朗读和跟读。

每日一句

每日一句用于轻量积累,适合碎片化学习。

语法专题

语法专题包含讲解、例句和练习题。

短语学习

短语模块补充固定搭配、习语、谚语等表达。

八、复习系统

项目使用 SM-2 思路实现间隔重复:

if(quality <3) {repetitions=0interval=1}else{if(repetitions===0) {interval=1}elseif(repetitions===1) {interval=6}else{interval= Math.round(interval * easeFactor) } repetitions++ }

这让用户不是机械重复,而是在合适时间复习合适单词。

九、持久化与学习数据

项目使用 Preferences 和 AppStorage 保存用户数据:

exportfunctionyingyuPrefSet(key:string,value:string): void {if(!pref) {AppStorage.setOrCreate(key,value)return } pref.putSync(key,value)void pref.flush()}

保存内容包括:

  • 用户设置;
  • 学习进度;
  • 已学单词;
  • 成就状态;
  • 自定义生词;
  • 复习记录。

十、全场景能力

项目接入了近场分享:

harmonyShare.on('knockShare',(target: harmonyShare.SharableTarget)=>{ callback(target) })

也预留了分布式数据同步:

const options:distributedKVStore.Options={createIfMissing:true,autoSync:true,kvStoreType:distributedKVStore.KVStoreType.SINGLE_VERSION,securityLevel:distributedKVStore.SecurityLevel.S1}

并支持跨设备续接:

wantParam['yingyu_settings'] = settings wantParam['yingyu_progress'] = progress wantParam['yingyu_learned_words'] = learnedWords

这些能力让学习从单设备变成跨场景体验。

十一、AI 与后端扩展

项目还包含一个 Web 后端:

web/backend/src/ ├── routes/ ├── services/ai/├── middleware/ └── index.ts

AI 接口包括:

  • 单词讲解;
  • 错题分析;
  • 自适应难度;
  • AI 对话;
  • 作文批改;
  • 学习报告;
  • 举一反三。

这为后续智能学习助手打下基础。

十二、小结

从 0 到 1 搭建一个 OpenHarmony 英语学习 App,可以按下面思路推进:

  • 先定义产品定位和学习闭环;
  • 再拆分页面、组件、数据、工具;
  • 用 ArkUI 构建首页和学习页面;
  • 用本地存储保存学习进度;
  • 用间隔重复提高复习效率;
  • 用成就系统增强坚持动力;
  • 用分布式和分享能力拓展全场景;
  • 用 AI 接口预留智能学习能力。

「英语视界」这个项目的价值在于,它不是单一功能 Demo,而是一套完整学习产品雏形。对于 OpenHarmony 应用开发者来说,很适合作为教育类 App 的实战参考。🌱

http://www.jsqmd.com/news/1105973/

相关文章:

  • 工程化赋能传统业务工作流:先找重复劳动,不要先找服务
  • 大模型评测与AI产品质量保障:第7篇 机器学习的三种学习范式
  • SQL实战:测试必会的增删改查,从入门到熟练
  • SpringBoot 自动配置原理
  • 记忆排列题目分析
  • 第93题 IGBT模块陶瓷基板(AlN/Al₂O₃/Si₃N₄)金属化
  • C++ PDF解析渲染库Poppler全方位实战:场景、库对比、CMake集成、可运行代码
  • 死磕信号量实现读者-写者:我被自己写的代码坑惨了
  • 市县级全域旅游智慧导览电子地图制作实操(三)AI+人工生成全域手绘地图
  • Xinference开源大模型本地部署实战指南
  • 工业级条码扫描模块与PIC32MZ嵌入式方案解析
  • 3分钟掌握Illustrator智能填充:Fillinger脚本让你的设计效率翻倍
  • 网络流量分类技术:从机器学习到硬件优化实践
  • UABEA:重新定义Unity资源编辑的跨平台革命
  • 迅雷网盘在线解析:高速直链下载的方法
  • 目标检测分类部分损失函数:BCE → Focal Loss → VFL → MAL 的演进
  • okbiye 毕业论文 AI 写作实操指南|界面全功能拆解,一站式搞定学位论文撰写
  • UE5快捷键速查
  • 主流VST头显视觉性能对比:Vision Pro、Quest 3与Quest Pro评测
  • 大厂高频面试题:手机号加密存储后,如何快速按尾号查询?
  • AI一周事件 · 2026-W27(6月24日–6月30日)
  • 终极Windows驱动管理指南:DriverStoreExplorer免费释放C盘空间
  • BetterNCM Installer:3步解锁网易云音乐隐藏功能
  • 为了防止题目链接失效,将题目原文复制如下:
  • 基于 epoll 的协程调度器——零基础深入浅出 C++20 协程
  • 7_CSS预处理器Sass
  • Sonnet 5 发布:Prompt 已死,Loop 当
  • Java实现Navicat密码加密解密:AES-256-CBC本地安全存储实战
  • 短效代理适合哪些业务场景?资深玩家实测科普适配场景指南
  • 使用74HC165与ARM Cortex-M4实现高效并行转串行输入设计