本文引用的文件
本文件面向“AI有声书生成平台”的前端构建与部署,聚焦于 Vite 构建工具在 uni-app 场景下的配置与优化、多平台编译与打包策略、开发与生产环境差异、热更新机制、代码分割与资源压缩、CDN 集成思路,以及部署前准备与运维要点。内容基于仓库中实际存在的配置文件与脚本进行梳理与说明。
前端工程位于 my-uniapp-vue3 目录,采用 uni-app + Vue3 + Vite 的组合,通过 @dcloudio/vite-plugin-uni 提供多端编译支持;后端工程位于 server 目录,使用 Node.js + Express + Prisma;部署脚本位于根目录,包含本地构建与远程部署流程。
graph TB
subgraph "前端(uni-app)"
VCFG["vite.config.ts"]
PKG["package.json"]
TS["tsconfig.json"]
MAIN["src/main.ts"]
ENV["src/env.d.ts"]
MANI["src/manifest.json"]
PAGES["src/pages.json"]
end
subgraph "后端(Node.js)"
SAPP["server/src/app.ts"]
SCONF["server/src/config/index.ts"]
SDEP["server/package.json"]
end
subgraph "部署脚本"
DSH["deploy.sh"]
DPROM["deploy-prod.sh"]
DMD["DEPLOY.md"]
end
VCFG --> PKG
PKG --> MAIN
MAIN --> MANI
MAIN --> PAGES
VCFG -. 代理/服务 .-> SAPP
DSH --> VCFG
DPROM --> VCFG
DMD --> DSH
DMD --> DPROM
图表来源
章节来源
章节来源
下图展示从开发到生产的整体流程:本地 Vite 启动与代理,uni-app 多端编译,本地/远程构建产物,Nginx 反向代理与静态资源缓存,PM2 管理后端服务。
sequenceDiagram
participant Dev as "开发者"
participant Vite as "Vite 开发服务器"
participant Uni as "@dcloudio/vite-plugin-uni"
participant Build as "构建产物(dist)"
participant Nginx as "Nginx"
participant PM2 as "PM2"
participant API as "后端服务"
Dev->>Vite : 启动开发服务器
Vite->>Uni : 触发多端编译
Uni-->>Build : 输出 H5/小程序/快应用等
Dev->>Nginx : 访问前端静态页(反向代理)
Nginx->>API : 将 /api 前缀转发至后端
PM2->>API : 管理进程与自动重启
图表来源
适用场景:本地开发时,避免 CORS 与跨域问题,统一走本地 3000 端口。
flowchart TD
Start(["Vite 启动"]) --> Proxy["配置代理规则<br/>/api -> http://localhost:3000<br/>/uploads -> http://localhost:3000<br/>/videos -> http://localhost:3000"]
Proxy --> DevServe["启动开发服务器"]
DevServe --> Build["触发 uni-app 编译"]
Build --> Dist["生成多端产物"]
Dist --> End(["联调/预览"])
图表来源
章节来源
构建产物:H5 默认输出至 dist/h5;其他平台输出至对应目录(由 uni-app 插件决定)。
flowchart TD
CMD["执行构建脚本<br/>uni / uni build"] --> UniPlugin["@dcloudio/vite-plugin-uni"]
UniPlugin --> H5["H5 产物"]
UniPlugin --> MP["小程序/快应用 产物"]
H5 --> Dist["dist/h5"]
MP --> Out["各平台输出目录"]
图表来源
章节来源
env.d.ts:为 .vue 文件提供类型支持,确保 IDE 正确识别单文件组件。
graph LR
TS["tsconfig.json"] --> Alias["@/* 别名"]
TS --> Lib["lib: esnext, dom"]
TS --> Src["include: *.ts, *.vue"]
ENV["src/env.d.ts"] --> VueType[".vue 类型声明"]
图表来源
章节来源
条件引入 vConsole:H5 环境下可按需启用移动端调试面板。
sequenceDiagram
participant Entry as "入口(main.ts)"
participant App as "SSR App"
participant Store as "Pinia"
participant User as "用户状态"
Entry->>App : createSSRApp(App)
Entry->>Store : createPinia()
Entry->>User : useUserStore().initUser()
Note over Entry,App : H5 下可选择性启用 vConsole
图表来源
章节来源
manifest.json:声明 app 名称、版本、plus 模块与权限、小程序 SDK 配置等。
graph TB
PAGES["pages.json"] --> Pages["页面列表/导航/TabBar"]
MANI["manifest.json"] --> AppInfo["应用信息/版本"]
MANI --> Modules["模块/权限/SDK"]
PAGES --> UI["页面样式/交互"]
MANI --> Runtime["运行时配置"]
图表来源
章节来源
章节来源
PM2:以守护进程方式启动后端服务,设置开机自启与日志管理。
flowchart TD
LBuild["本地构建<br/>后端: npm run build<br/>前端: uni build(h5)"] --> Sync["同步到服务器"]
Sync --> Backup["备份旧版本"]
Backup --> Install["安装生产依赖/生成 Prisma 客户端"]
Install --> Nginx["配置 Nginx 反代与缓存"]
Nginx --> PM2["PM2 启动后端服务"]
PM2 --> Verify["健康检查与日志查看"]
图表来源
章节来源
章节来源
章节来源
章节来源
运行链路:Nginx 将 /api 前缀代理至后端,PM2 管理 Node.js 进程;前端通过 dist/h5 提供静态页面。
graph LR
Scripts["package.json scripts"] --> UniPlugin["@dcloudio/vite-plugin-uni"]
UniPlugin --> ViteCfg["vite.config.ts"]
ViteCfg --> Dist["dist/h5"]
Dist --> Nginx["Nginx 静态站点"]
Nginx --> API["/api 反代后端"]
API --> PM2["PM2 管理后端"]
图表来源
章节来源
章节来源
本项目采用 Vite + uni-app 的现代化前端构建体系,结合 Nginx 与 PM2 的稳定后端部署,形成从开发到生产的完整闭环。通过代理联调、多端编译、静态资源缓存与进程守护,能够满足 AI 有声书平台在多平台与高并发场景下的交付需求。后续可在 CDN 集成、代码分割与缓存策略上进一步优化。
章节来源