# 有家相册(uni-app 跨端前端) 家庭相册、家族树与文档共享的 uni-app 前端:一套源码出 H5、微信小程序、App 三端。 业务后端是 CloudBuilder(.NET),本仓库的前身是旧管理端 WebVue 的迁移工程。 ## 技术栈 Vue 3 + TypeScript + Vite + uni-app + uview-pro + Pinia + vue-i18n。 **包管理器统一使用 npm**(脚手架附带的 pnpm 配置已移除,请勿提交 `pnpm-lock.yaml`)。 ## 环境要求 - Node >= 18 - npm >= 9 ## 快速开始 ```bash npm install npm run dev # H5,默认连本机后端 npm run dev:mp-weixin # 微信小程序:产物在 dist/build/mp-weixin,用微信开发者工具导入该目录 npm run dev:app # App:产物在 dist/dev/app,再用 HBuilderX 打包运行 ``` 发布构建与检查: | 命令 | 作用 | | --- | --- | | `npm run build` | H5 发布构建 | | `npm run build:mp-weixin` | 微信小程序发布构建 | | `npm run build:app` | App 发布构建 | | `npm run type-check` | vue-tsc 全量类型检查 | | `npm run lint` / `npm run lint:fix` | ESLint 检查 / 自动修复 | ## 后端地址(.env 分层) 换环境只改项目根的 `.env` / `.env.development` / `.env.production`,不要在代码里写死地址: | 变量 | 生效场景 | 缺省回落值 | | --- | --- | --- | | `VITE_WEB_API_ROOT` | 发布构建 | `https://uat.youjiala.com` | | `VITE_WEB_API_ROOT_DEV` | 开发构建(H5) | `http://localhost:5235` | | `VITE_WEB_API_ROOT_DEV_APP` | 开发构建(App 真机/模拟器) | `https://uat.youjiala.com` | 变量缺失时由 `src/policy/custom/webSitePolicy.ts` 的常量兜底,删掉 `.env` 也能构建出可用产物。 取值口径、新增变量的步骤与三端差异见 [src/md/environment.md](src/md/environment.md)。 ## 目录速览 ``` src/ ├── api/ service/ 后端接口封装(service/* 由代码生成器维护) ├── common/ 请求拦截器、全局错误边界、样式与常量 ├── pages/ 页面:login / dashboard / error(page401,403,404) ├── permission/ 权限内核与页面权限表 ├── policy/custom/ 站点配置(.env 的 fallback) ├── router/ 路径别名、导航拦截器 ├── stores/ Pinia ├── md/ 工程文档(下表) └── manifest.json 三端应用身份(appid / bundleName) ``` ## 改代码前先读的文档 | 文档 | 讲什么 | | --- | --- | | [src/md/environment.md](src/md/environment.md) | .env 分层、mode 映射、三端读取差异 | | [src/md/error-handling.md](src/md/error-handling.md) | 全局错误边界与「已提示过就不再打扰」的口径 | | [src/md/permission.md](src/md/permission.md) | 权限模型、页面权限表、菜单可见性 | | [src/md/page-routing.md](src/md/page-routing.md) | 路由别名、导航拦截、错误页跳转链 | 代码风格由 ESLint 约束,但 IDE 里同时生效的 Prettier 与它存在少量对撞规则(箭头括号、运算符换行位置); 冲突写法已在文档里给了规避方式,遇到 `--fix` 反复回退请改写构造而不是硬碰。 ## 待替换的应用身份 `src/manifest.json` 与 `harmony-configs/build-profile.json5` 里的脚手架身份已清成占位,正式发布前需逐项替换: - DCloud `appid`:当前为占位 `__UNI__YJL0001`,需在 HBuilderX 登录自有账号后重新领取 - 微信小程序 `appid`:故意留空(构建时回落为 `touristappid`,只能本地预览),发布前换成自有 AppID - 鸿蒙 `bundleName`:当前 `com.youjiala.app`,需与华为侧注册的包名一致 - 鸿蒙签名材料路径:`harmony-configs/build-profile.json5` 里指向 `./signing/youjiala.*`,需放入自有证书 ## 许可 界面组件库 uview-pro 与其脚手架遵循 MIT(见 `LICENSE`);业务代码版权归本项目所有。