avatar

cindahy

A text-focused Halo theme

  • 首页
  • 文章分类
  • 项目
  • 关于
Home 仿晋江小说阅读器的鸿蒙app
文章

仿晋江小说阅读器的鸿蒙app

Posted 8 days ago Updated 8 days ago
By Administrator
195~251 min read

此项目由于时间原因,我参与的不算多,在这里简单记录一下。


项目下载链接:https://47.111.94.227:24489/down/lzCLTogBGsKm.tar.gz 提取码:Z68bf5

一、设计需求

1.1 功能清单

书城界面

(1)书城首页顶部轮播图展示,左上角显示简介;

(2)推荐书目板块,显示三本推荐的书籍,包括书名和封面;

(3)热门书目板块,显示三本热门书籍,包括书名和封面;

(4)所有书籍板块,显示数据库中所有的书籍,包括书名、作者、简介和封面;

(5)筛选功能,有几个标签按钮可供选择进行书籍筛选,选择后会更新显示的书籍数量,并将书籍列表展示在所有书籍板块;

(6)管理员功能,可以编辑书籍的封面、书名、作者、字数、状态和简介;

(7)点击书籍可跳转至对应的书籍详情页面。

书架界面

(1)新书千字榜板块,横向滚轮显示前几本新书榜的书籍,包括书名和封面,点击更多可跳转至新书千字榜,查看新书千字榜所有书籍;

(2)顶部导航栏包括收藏、收藏作者、书单、关注作者、已阅列表,点击可跳转至对应页面;

(3)最近阅读板块,展示用户最近阅读过的书籍,包括封面、书名、作者、状态、标签和字数;

(4)收藏夹板块,展示用户创建的收藏夹以及加入收藏夹的书籍列表;

(5)收藏作者板块,展示用户已关注的作者列表;

(6)点击书籍可跳转至对应的书籍详情页面。

发现界面

(1)搜索栏板块,包括搜索条件、搜索栏输入框和搜索图标,搜索条件包括书名、作者和标签,可供用户选择按什么条件搜索,输入搜索内容点击搜索图标后跳转至搜索界面显示搜索结果;

(2)大家都在看板块,展示热门书籍列表,包括书名和对应简介;

(3)猜你喜欢板块,展示用户可能爱看的书籍列表,包括书名、作者、状态、标签和字数,右侧有一个按钮可以选择显示或关闭该板块;

(4)点击书籍可跳转至对应的书籍详情页面。

我的界面

(1)未登录状态下,有登录和注册按钮,提供用户登录或者注册功能;

(2)登陆后,可进行切换账号或退出登录操作;

(3)账号安全板块,可跳转至对应页面进行修改密码、手机号和邮箱信息;

(4)基本信息板块,可跳转至对应页面进行修改头像、昵称信息;

(5)发出评论板块,可跳转至对应页面查看用户当前所有的评论留言信息;

(6)足迹板块,可跳转至对应页面查看用户当前已浏览过的书籍信息列表,可以删除记录。

书籍详情界面

(1)显示书籍信息,包括书名、作者、标签、状态、简介和书名等信息;

(2)作者专栏板块,点击后跳转至对应页面可查看作者信息、作者所有作品,还可关注作者等操作;

(3)收藏板块,点击可将对应书籍加入想要的收藏夹,同时可以新建收藏夹;

(4)开始阅读板块,点击可跳转至阅读页面进行阅读;

(5)目录板块,点击可跳转至目录页面显示目录信息,包括章节数、章节名称、章节简介,还可正序或倒序显示;

(6)导入章节模块,点击可以将txt文件内容导入对应书籍;

(7)评论模块,包括输入栏和发送按钮,可以查看所有用户对该书的评论,也可发表评论。

阅读界面

(1)内容部分,展示书籍的文本内容,可供阅读;

(2)右上角设置里可以修改文本字体、翻页方式,还可切换夜间或日间模式

(3)底部导航栏,包括翻页按钮和跳转至目录按钮;

(4)左上角有返回退出阅读按钮,同时显示当前阅读章节。

二、主体框架

2.1 总体架构

2.2 数据流向

数据类型

数据流向

用户登录/注册

用户输入信息→ 客户端(UserLoginInfo.ets)→ 服务器(UserController)→ 数据库(MySQL)→ 客户端存储(偏好存储)→ 界面显示

书籍数据

服务器(BookController)→ 客户端(BookStore.ets)→ 界面显示(书城、书架、详情页)

评论数据

用户输入评论→ 客户端(BookController)→ 服务器(BookController)→ 数据库(MySQL)→ 客户端显示(书籍详情页)

收藏夹数据

用户操作→ 客户端(FavoriteController)→ 服务器(FavoriteController)→ 数据库(MySQL)→ 客户端显示(书架、收藏夹)

阅读记录

用户阅读行为→ 客户端(RecentReadDao)→ 服务器(UserController)→ 数据库(MySQL)→ 客户端显示(足迹页)

三、服务端数据库的设计

3.1 数据库

序号

表名

功能

1

t_author

作者表

2

t_book

书籍表

3

t_book_comment

评论表

4

t_book_fav

收藏书籍表

5

t_chapter

章节表

6

t_chapter_content

内容表

7

t_favorite

收藏夹表

8

t_follow

关注表

9

t_follow_author

关注作者表

10

t_read_history

最近阅读表

11

t_user

用户表

3.2 E-R图

3.3 各表的设计

3.2.1 作者表(t_author)

3.2.2 书籍表(t_book)

3.2.3 评论表(t_book_comment)

3.2.4 收藏书籍表(t_book_fav)

3.2.5 章节表(t_chapter)

3.2.6 内容表(t_chapter_content)

3.2.7 收藏夹表(t_chapter_content)

3.2.8 关注表(t_chapter_content)

3.2.9 关注作者表(t_follow_author)

3.2.10 最近阅读表(t_read_history)

3.2.11 用户表(t_user)

四、具体实现

4.1 代码的组成

4.1.1 客户端代码组成说明

文件夹名

核心文件

主要功能

db

BookStore.ets,DataCenter.ets

本地SQLite 封装:17 张表创建、事务、缓存、统计算法;一开关(USE_REMOTE)决定走本地 SQLite 还是远程 Tomcat

model

*Data.ets

与后端字段1:1 映射的 15 个类型定义

net

RemoteBookStore.ets,Api.ets

后端30 + 个 REST 接口的 ArkTS 客户端封装;含 multipart 上传;统一出口:注册/登录/收藏/搜索/轮播/专栏等 20 + 接口

pages

*Page.ets

存放所有页面组件,包括书城、书架、发现、我的等页面,以及书籍详情、阅读界面等。

user

UserLoginInfo.ets

内存单例+ Preferences 持久化;事件总线通知各页刷新

utils

BookParser.ets,PreferencesUtils.ets

TXT 正则拆章;epub 预留接口;选中历史、用户、收藏等 key-value 封装

entryability

EntryAbility.ets

应用入口能力

common

EntryContext.ets

全局AbilityContext 单例,供图片/数据库/Preferences 使用

4.1.2 服务端代码组成说明

模块

主要文件

主要功能

控制器层

AuthorController.java

处理作者相关请求,如获取作者信息、作品列表等。

BookController.java

处理书籍相关请求,如书籍列表、搜索、详情、评论等。

ChapterController.java

处理章节相关请求,如章节列表、内容、最新章节等。

FavoriteController.java

处理收藏夹相关请求,如收藏夹列表、书籍收藏等。

UserController.java

处理用户相关请求,如注册、登录、信息更新、头像更新等。

饮食记录子模块

AuthorDao.java

提供作者数据的增删改查操作。

BookDao.java

提供书籍数据的增删改查操作。

ChapterDao.java

提供章节数据的增删改查操作。

FavoriteDao.java

提供收藏夹数据的增删改查操作。

RecentReadDao.java

提供用户阅读记录的增删改查操作。

UserDao.java

提供用户数据的增删改查操作。

工具类

JDBCUtil.java

提供数据库连接和关闭操作的工具方法。

模型层

Author.java

定义作者实体类。

Book.java

定义书籍实体类。

Chapter.java

定义章节实体类。

ChapterContent.java

定义章节内容实体类。

Favorite.java

定义收藏夹实体类。

FollowAuthorVO.java

定义关注作者的视图对象。

UserCommentV0.java

定义用户评论的视图对象。

UserEntity.java

定义用户实体类。

4.2 文件清单

4.2.1 核心页面文件清单

序号

文件名

主要功能

1

BookMallPage.ets

书城页面,展示书籍列表、轮播图、筛选功能等。

2

BookshelfPage.ets

书架页面,展示用户的收藏夹、最近阅读、收藏作者等。

3

DiscoverPage.ets

发现页面,展示搜索栏、热门书籍、猜你喜欢等。

4

ProfilePage.ets

我的页面,展示用户信息、账号安全、基本信息等。

5

BookDetailPage.ets

书籍详情页面,展示书籍信息、作者专栏、评论等。

6

ReadPage.ets

阅读页面,展示书籍内容,支持翻页、字体调整等。

7

CatalogPage.ets

目录页面,展示书籍章节列表,支持排序和搜索。

8

Login.ets

登录:墨绿渐变、图标输入框、事件总线

9

Register.ets

注册:同名检查、手机号、邮箱、笔名

10

SearchResultPage.ets

搜索结果:书名/作者/标签三通道

11

AuthorPage.ets

作者主页:头像、签名、完结/连载列表、关注

12

NewBookPage.ets

新书榜:横向分类、多选筛选、标签换行

13

AccountSecurityPage.ets

账号安全:改密码、手机号、邮箱

14

BasicInfoPage.ets

基本信息:头像(图库)、昵称、实时预览

15

UserCommentPage.ets

我的评论:左头像、绿色书名、时间

16

FootprintPage.ets

我的足迹:最近30 本、滑动删除

17

AdminPage.ets

简易后台:书籍CRUD、实时刷新、弹窗编辑

18

CollectListPage.ets

收藏列表:复用ArticleItem 组件

4.2.2 组件文件清单

序号

文件名

主要功能

1

ArticleItem.ets

文章列表项组件,展示单个文章的标题、作者、简介等。

2

CatalogItem.ets

目录项组件,展示单个章节的标题、更新时间等。

3

ChapterContent.ets

章节内容组件,展示章节的正文内容。

4

FollowAuthorItem.ets

关注作者项组件,展示作者头像、笔名、签名等。

5

UserCommentItem.ets

用户评论项组件,展示单条评论的内容、作者、时间等。

4.2.3 数据模型文件清单

序号

文件名

对应后端实体

1

NewBookItem.ets

t_book

2

HotBookItem.ets

hot_books

3

ChapterContent.ets

t_chapter_content

4

CatalogData.ets

t_chapter

5

User.ets

t_user

6

Response.ets

R<T>

7

Article.ets

轮播/专栏/问答

8

ArtcleItemBean.ets

文章卡片

9

Tree.ets

知识体系

10

Search.ets

热词

11

Recommend.ets

猜你喜欢

12

Pair.ets

通用键值对

13

NovelItem.ets

小说卡片

4.2.4 工具类文件清单

序号

文件名

主要功能

1

BookParser.ets

TXT 正则拆章;epub 预留

2

CollectUtils.ets

收藏/取消收藏封装

3

LogUtils.ets

hilog 二次封装

4

PreferencesUtils.ets

Preferences 读写

RouterUtils.ets

路由跳转

StringUtils.ets

资源字符串同步获取

Toast.ets

轻提示

WindowUtils.ets

窗口宽高获取

4.2.5 数据库操作文件清单

序号

文件名

主要功能

1

BookStore.ets

提供书籍数据的本地存储和操作方法。

2

RemoteBookStore.ets

提供书籍数据的远程存储和操作方法,与服务器端交互。

3

DataCenter.ets

提供数据存储的统一接口,根据配置选择本地或远程存储。

4.2.6 接口定义文件清单

序号

接口名

后端路径

主要功能

1

/api/book/list

GET

全部书籍

2

/api/book/hot

GET

热门10 本

3

/api/book/new

GET

新书干字榜Top20

4

/api/book/search

GET

书名模糊

5

/api/book/searchByAuthor

GET

作者模糊

6

/api/book/searchByTag

GET

标签模糊

7

/api/book/detail

GET

单本详情

8

/api/book/update

POST

管理员更新

9

/api/book/uploadChapters

POST

TXT 批量上传

10

/api/book/comment

GET/POST

评论列表/发表

11

/api/chapter/list

GET

章节目录

12

/api/chapter/content

GET

单章正文

13

/api/chapter/latest

GET

最新章节

14

/api/user/register

POST

注册

15

/api/user/login

POST

登录

16

/api/user/info

GET

用户信息

17

/api/user/updateInfo

POST

更新资料

18

/api/user/updatePassword

POST

修改密码

19

/api/user/updateAvatar

POST

更换头像

20

/api/user/recentRead

GET

最近阅读

21

/api/user/addRecentRead

POST

写入阅读历史

22

/api/user/removeRecentRead

POST

删除单条记录

23

/api/user/fav/list

GET

收藏夹列表

24

/api/user/fav/

POST

新建收藏夹

25

/api/user/fav/collect

POST

收藏书籍

26

/api/user/fav/uncollect

POST

取消收藏

27

/api/user/followAuthor/list

GET

已关注作者

28

/api/user/followAuthor/add

POST

关注

29

/api/user/followAuthor/remove

POST

取消关注

30

/api/user/updateSpecialFollow

POST

设为特别关注

31

/api/author

GET

作者主页

4.2.7 资源文件清单

序号

文件类型

典型文件

主要功能

1

icon

ic_back.png

统一返回箭头

2

cover

newbook_cover1~10.jpg

默认书籍封面

3

logo

logo1.png

启动图标

4

color

color.json

主色#ff23ae94

5

string

strings.json

中英双语

6

float

float.json

间距/字号

4.2.8 配置文件清单

序号

文件名

主要功能

1

module.json5

包名、权限、设备类型、入口Ability

2

main_pages.json

18 个页面路由

3

backup_config.json

自动备份开关

4.2.9 页面布局文件清单

序号

页面名称

布局特点

主要文件

1

书城页面

纵向滚动布局

BookMallPage.ets

2

书架页面

网格+卡片布局

BookshelfPage.ets

3

发现页面

列表+卡片布局

DiscoverPage.ets

4

我的页面

分栏布局

ProfilePage.ets

5

书籍详情页面

分层信息展示

BookDetailPage.ets

6

阅读页面

数据可视化布局

ReadPage.ets

7

目录页面

列表布局

CatalogPage.ets

8

用户评论页面

社交化布局

UserCommentPage.ets

9

足迹页面

列表布局

FootprintPage.ets

4.2.10 路由配置清单

序号

路由名称

目标页面

参数说明

1

书城页面

BookMallPage.ets

无

2

书架页面

BookshelfPage.ets

无

3

发现页面

DiscoverPage.ets

无

4

我的页面

ProfilePage.ets

无

5

书籍详情页面

BookDetailPage.ets

bookId:书籍 ID

6

阅读页面

ReadPage.ets

bookId:书籍 ID,chapterId:章节 ID

7

目录页面

CatalogPage.ets

bookId:书籍 ID

8

用户评论页面

UserCommentPage.ets

无

9

足迹页面

FootprintPage.ets

无

五、使用说明

5.1开屏图

运行后会展示开屏动画页面

5.2登录注册界面

未登录状态下点击“我的”页面中的登录或者注册按钮即可跳转至登录或注册页面。

在注册页面按提示分别输入信息,最后点击注册按钮即可注册成功。

在注册页面可以选择是否显示密码。

也可以点击“已有账号?立即登录”跳转至登陆页面。

在登录页面输入用户的账号和密码,再点击登录按钮即可登录成功,并跳转至书城页面,同时,“我的”页面也会更新成登陆状态,显示用户的头像和笔名。

在登录页面可以选择是否显示密码。

5.3书城界面

书城页面顶部是轮播图动画展示。

下方反别是推荐书目专栏、热门书目专栏和所有书目专栏。前两者只显示对应书籍列表中的前三本。

在轮播图和推荐专栏之间有一行标签筛选栏,可以点击想要的标签筛选出对应的书籍,下方小字提示筛选后的书籍数量,筛选结果显示在所有书籍专栏。

在书城页面最下方有一个管理的按钮,点击即可跳转至简单管理员页面。在该页面会显示所有书籍列表,点击对应书籍下方的编辑按钮即可修改书籍相关的信息,点击保存后实现修改书籍信息的功能。

5.4发现界面

页面由搜索栏、大家都在看板块和猜你喜欢板块构成。

大家都在看展示一些热门书籍,点击书名即可跳转至对应书籍的详情页面。

点击猜你喜欢右侧的按钮,可以关闭猜你喜欢。

点击搜索栏左侧,可以选择筛选方法,总共3种,分别为书名,作者,标签。

搜索功能

点击文本后,会跳转到该书的详情页

5.5书架界面

书架页面由收藏、收藏作者两个板块构成。

收藏板块包含收藏夹、最近阅读和新书千字榜。

收藏作者板块包含用户已关注的所有作者列表。

如图,点击收藏作者即可显示已关注的作者。

最近阅读显示最近浏览过的书籍列表信息。

点击收藏夹会显示用户添加在对应收藏夹中的书籍信息列表。

点击更多,进入新书千字榜

可以点击标签筛选对应的书籍。

5.6书籍详情页界面

书籍详情页面由书籍信息、作者专栏板块、收藏板块、阅读板块、目录板块、导入板块和评论板块构成。

点击收藏可以收藏该书,并且会跳出弹窗,可以选择收藏到哪个文件夹,点击弹窗右上角的+,可以创建新收藏夹,收藏夹在书架界面会展示出来

点击目录,可以实现倒叙升序展示章节

点击开始阅读或者某个章节,跳转到该书的阅读界面,能够实现书页不同方式滚动,调节字体大小和调节日间或者夜间。

点击导入章节可以实现本地导入

点击作者专栏进入该作者主页

最下方可以在输入栏输入内容并点击右侧发送按钮实现评论功能。

同时会展示当前该书籍的所有评论信息,包括用户的头像、昵称、评论内容和评论时间。

5.7我的界面

未登录状态显示默认头像,右侧提示登入或注册。同时点击其他图标都会跳转至登陆页面。

用户登陆后会切换成登陆状态,包括用户头像、昵称,新增切换账号和退出登录的按钮,点击可实现对应功能。

点击账号安全能够实现邮箱、手机号和密码的更改

点击基本信息按钮,能够查看自己的个人信息,实现更改头像和昵称的功能

点击我的评论,可以查看我的所有评论

点击足迹,会显示我刚刚看过的所有书,足迹可以按删除,进行单条删除

六、使用到的技术

6.1 总体技术

1、创建HarmonyOS应用,使用TypeScript(ArkTS)作为前端开发语言

2、数据库端则「云端 MySQL + 端侧 SQLite」双轨并行,通过统一的数据中心开关实现「演示/生产」一键热切换

3、应用架构采用前后端分离设计,HarmonyOS客户端与Java服务器通过HTTP通信,HarmonyOS客户端负责UI展示和用户交互,Java服务器端负责业务逻辑处理和数据库操作通过HTTP RESTful接口进行数据通信。

开发

模块

使用技术

说明

客户端开发

前端开发框架

ArkUI框架

HarmonyOS声明式UI开发框架,支持一次开发、多端部署

开发语言

ArkTS

客户端使用ArkTS,服务器使用JavaScript

本地数据库

@ohos.data.relationalStore

端侧SQLite 封装,支持 SQL92 标准,用于离线缓存与演示模式

页面路由

@ohos.router

官方路由能力,支持参数传递、栈式返回、replace 等常用模式

状态管理

@State / @Prop / @Link / @Provide

组件级响应式装饰器,配合emitter 事件总线实现跨页通信

服务器端开发

服务器技术

Java + Servlet

基于Java的Web服务器技术

Web容器

Tomcat 9.0

Java Web应用服务器,提供Servlet容器

服务器框架

原生Servlet/JSP

使用标准的Servlet API处理HTTP请求

开发环境

IDEA 2021.1.1 + JDK

Java集成开发环境与Java开发工具包

数据库连接

JDBC

Java数据库连接,用于与MySQL通信

数据存储

数据库系统

MySQL 8.0

关系型数据库,负责用户、书籍、章节、评论、收藏等持久化数据

数据库管理工具

Navicat Premium

可视化数据库管理工具,支持SQL操作和数据同步

通信协议

网络通信

HTTP + JSON

基于HTTP协议,使用JSON格式进行前后端数据交换

数据序列化

JSON

统一使用JSON序列化,前后端字段1:1映射

部署环境

服务器环境

JDK + Tomcat 9.0 + MySQL

Java运行环境、Web容器和数据库服务

部署方式

本地或云服务器部署

支持本地开发测试和云端生产环境部署

6.2 关键技术

6.2.1本地-远程双端一键切换

DataCenter 内 USE_REMOTE = true 时所有业务自动走 RemoteBookStore;false 时走本地 SQLite,无需修改任何 UI 代码。

6.2.2阅读页双翻页模式

左右滑动:Swiper + 拆页算法(字符数/行高/屏高)

上下滑动:Scroll + 章间空白分隔页 + 预加载下一章

夜间模式:全局Color 资源 + Preferences 持久化

6.2.3TXT批量导入事务

前端:DocumentViewPicker → ArrayBuffer → multipart/form-data

后端:UploadChaptersServlet 一次性解析 \n\n 分章 → 双表事务插入(t_chapter、t_chapter_content)

回滚:任一失败自动rollback,保证目录-正文一致性

6.2.4收藏夹幂等设计

前端先DELETE 再 INSERT;后端用 ON DUPLICATE KEY UPDATE 防重复,支持同一本书跨收藏夹移动。

6.2.5事件总线解耦

emitter事件名

订阅方

用途

userLogin

所有Header

刷新头像/昵称

favChanged

BookshelfPage

实时更新收藏数

recentReadChanged

FootprintPage

删除后同步列表

avatarUpdated

ProfilePage

即时预览新头像

6.2.6数据库性能优化

本地:hot_books、new_books 首次启动批量插入 → 后续仅增量更新

远程:最近阅读、收藏夹均分页拉取,单次≤30 条,避免一次性全表查询

项目
项目
License:  CC BY 4.0
Share

Further Reading

Jan 3, 2026

仿晋江小说阅读器的鸿蒙app

此项目由于时间原因,我参与的不算多,在这里简单记录一下。 项目下载链接:https://47.111.94.227:24489/down/lzCLTogBGsKm.tar.gz 提取码:Z68bf5 一、设计需求 1.1 功能清单<

Sep 10, 2025

基于yolov11的松材线虫病的深度识别

总览 到目前为止,我们基于yolov11的深度学习模型,搭建了一个能简单识别松材线虫病的网站,没有什么深入的东西,感觉都很框架。 下次得好好想想有一些创造性的变动了。 项目实现 收集数据 收集到有约5000个数据的现有数据集 环境搭建 进入yolov11的虚拟环境

Aug 17, 2025

模仿星露谷物语的游戏开发实践

这是我大二下学期做的期末课设,用c++编写,是模仿星露谷做的一款游戏,我大概花了一个月时间写了五千多行代码,简单实现了星露谷的一些基本游戏功能。 全程个人开发,gpt辅助,做完之后真的有莫大的成就感。 先简单的放一个演示视频 一、项目功能简单介绍 这是以星露谷物语这一游戏为方向开发的游戏,此为一个像

OLDER

计算机网络6-应用层

NEWER

计算机网络核心考点整理总结

Recently Updated

  • 计算机网络核心考点整理总结
  • 仿晋江小说阅读器的鸿蒙app
  • 计算机网络6-应用层
  • 计算机网络5-运输层
  • 计算机网络4-网络层

Trending Tags

计算机网络 面试 src 安全运营 文件上传 php反序列化 xss csrf ssrf xxe

Contents

©2026 cindahy. Some rights reserved.

Using the Halo theme Chirpy