本文引用的文件
本文件为“AI有声书生成平台”前端概览文档,聚焦于基于 uniapp + Vue 3 + TypeScript 的跨平台前端架构与实现要点。文档围绕项目初始化配置、依赖管理策略、开发环境搭建、跨平台兼容性(H5 与微信小程序)、项目结构总览、核心配置文件说明、开发工具链介绍以及版本信息、构建脚本与部署准备等基础信息进行系统化梳理,帮助开发者快速理解并高效参与开发。
前端工程位于 my-uniapp-vue3 目录,采用 uniapp 的标准目录组织方式,结合 Vue 3 + TypeScript 的现代化开发体验。核心目录与职责如下:
构建与配置:package.json、vite.config.ts、tsconfig.json、manifest.json、pages.json、App.vue、main.ts
graph TB
subgraph "前端工程(my-uniapp-vue3)"
PAGES["pages 目录<br/>页面与路由"]
STORE["store 目录<br/>Pinia 状态"]
UTILS["utils 目录<br/>请求/存储/配置/调试"]
COMPONENTS["components 目录<br/>UI 组件"]
TYPES["types 目录<br/>类型定义"]
STATIC["static 目录<br/>静态资源"]
CONFIGS["配置文件<br/>package.json/tsconfig.json/vite.config.ts/manifest.json/pages.json/App.vue/main.ts"]
end
PAGES --> CONFIGS
STORE --> UTILS
COMPONENTS --> UTILS
TYPES --> UTILS
STATIC --> CONFIGS
图表来源
章节来源
章节来源
前端采用“配置驱动 + 统一请求 + 状态管理 + 跨端适配”的架构设计,核心流程如下:
App.vue 与 main.ts 负责应用生命周期与全局初始化。
graph TB
A["main.ts<br/>应用入口"] --> B["App.vue<br/>根组件"]
B --> C["pages.json<br/>页面路由"]
B --> D["manifest.json<br/>应用清单"]
A --> E["Pinia Store<br/>user.ts / audio.ts"]
E --> F["utils/request.ts<br/>统一请求封装"]
F --> G["utils/config.ts<br/>API 域名解析"]
F --> H["utils/storage.ts<br/>跨端存储"]
A --> I["utils/debug.ts<br/>全局调试"]
J["components/MiniPlayer.vue<br/>迷你播放器"] --> E
图表来源
章节来源
章节来源
章节来源
章节来源
音频播放(audio.ts):音色列表、播放列表、播放上下文、播放控制(播放/暂停/切歌/倍速/seek)、播放模式切换与错误处理。
classDiagram
class UserStore {
+token
+userInfo
+memberStatus
+isLoggedIn
+isMember
+initUser()
+login(phone, code)
+sendCode(phone)
+fetchUserInfo()
+fetchMemberStatus()
+logout()
+updateUserInfo(info)
}
class AudioStore {
+voices
+currentAudio
+playlist
+currentIndex
+isPlaying
+currentTime
+duration
+playRate
+playMode
+hasPlaylist()
+hasNext()
+hasPrev()
+initAudioContext()
+fetchVoices()
+generateAudio(text, voiceId, voiceParams)
+play(audio)
+pause()
+resume()
+togglePlay()
+playPrev()
+playNext()
+handlePlayMode()
+togglePlayMode()
+seek(time)
+setPlayRate(rate)
+setPlaylist(list, index, autoPlay)
+destroy()
}
UserStore <.. AudioStore : "协作"
图表来源
章节来源
章节来源
调试日志:请求/响应/错误三类日志输出。
sequenceDiagram
participant Page as "页面组件"
participant Store as "Pinia Store"
participant Req as "request.ts"
participant Cfg as "config.ts"
participant Srv as "后端服务"
Page->>Store : 调用接口方法
Store->>Req : request(url, options)
Req->>Cfg : getApiBaseUrl()
Cfg-->>Req : 返回 API 域名
Req->>Req : 注入 Authorization 头/缓存/重试
Req->>Srv : uni.request 发起请求
Srv-->>Req : 返回 {code/data/message}
Req->>Req : 校验响应/错误处理
Req-->>Store : 返回数据或抛出错误
Store-->>Page : 更新状态/提示
图表来源
章节来源
章节来源
章节来源
章节来源
依赖脚本:package.json 提供 dev/build 多平台脚本,覆盖 H5 与多小程序平台。
graph LR
VITE["vite.config.ts"] --> UNI["@dcloudio/vite-plugin-uni"]
PKG["package.json"] --> VUE["vue"]
PKG --> PINIA["pinia"]
PKG --> TS["typescript/vue-tsc"]
PKG --> UNI
MAIN["main.ts"] --> PINIA
MAIN --> VUE
REQ["request.ts"] --> CFG["config.ts"]
REQ --> STRG["storage.ts"]
AUDIO["audio.ts"] --> REQ
USER["user.ts"] --> REQ
MINI["MiniPlayer.vue"] --> AUDIO
图表来源
章节来源
章节来源
本前端工程以 uniapp + Vue 3 + TypeScript 为核心技术栈,结合 Pinia 状态管理与统一请求封装,形成“配置驱动 + 跨端适配 + 可观测性”的开发范式。通过 pages.json 与 manifest.json 的集中配置,配合 vite.config.ts 的开发代理与 TypeScript 的类型保障,实现了 H5 与微信小程序的高兼容性与良好的开发体验。建议在后续迭代中持续完善调试日志与错误上报、优化播放器性能与缓存策略,并加强跨端组件的可测试性与可维护性。
章节来源
章节来源
章节来源