82b283b94d
后端对外域名由 hjc-api.websoft.top 迁到 api.gxhuijicai.com: - nuxt.config.ts 的 modulesApiBase / appApiBase / fileServerBase 默认值, 以及 preconnect / dns-prefetch 提示 - .env.production、.env.example、README 的环境变量说明 - scripts/cms_fill_image.py、scripts/publish-cms-content.mjs 的默认 CMS 地址 - database/template-switch-verification.md、outputs/ 两份快照里的地址表述 注意 appApiBase 同时是 fileServerBase 的来源(nuxt.config.ts 取其 origin, server/api/file/[...path].ts 用它代理文件下载)。已实测新域名与旧域名在 /api/file/** 上行为一致,本次迁移不改变该路径的结果。 已实测新域名对官网用到的接口可达(/api/hjc/** 正常),CORS 预检放行。
149 lines
5.0 KiB
Markdown
149 lines
5.0 KiB
Markdown
# 通用企业官网程序
|
||
|
||
基于 Nuxt 4 + Vue 3 + TypeScript 的企业官网纯前端展示系统。
|
||
|
||
## 项目定位
|
||
|
||
- 本项目仅包含官网前台展示代码
|
||
- 不含后端管理端,所有数据通过调用 SaaS 后端 API 获取
|
||
- 支持多模板切换、多租户、独立域名绑定、订阅过期校验
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
website/
|
||
├── app/ # 应用代码
|
||
│ ├── components/ # 公共组件
|
||
│ ├── composables/ # 组合式函数
|
||
│ ├── layouts/ # 布局
|
||
│ ├── pages/ # 页面路由
|
||
│ ├── templates/ # 模板集合
|
||
│ ├── types/ # TS 类型
|
||
│ ├── utils/ # 工具函数
|
||
│ └── assets/ # 样式资源
|
||
├── server/ # Nuxt Server
|
||
│ ├── api/ # API 代理
|
||
│ ├── middleware/ # 中间件
|
||
│ └── utils/ # 服务端工具
|
||
├── scripts/ # 脚本
|
||
└── templates/cloud-website # 模板预览图
|
||
```
|
||
|
||
## 安装依赖
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
## 本地开发
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
默认访问:http://localhost:3000
|
||
|
||
## 环境变量与打包
|
||
|
||
项目已按环境拆分配置文件,**打生产包不再需要手改 `.env`**:
|
||
|
||
| 命令 | 用途 | 读取的配置 |
|
||
|---|---|---|
|
||
| `npm run dev` | 本地开发 | `.env.development` |
|
||
| `npm run build:prod` | 生产打包 | `.env.production` |
|
||
| `npm run build` | 等同 `build:prod` | `.env.production` |
|
||
| `npm run build:dev` | 用开发配置打包(排查用) | `.env.development` |
|
||
| `npm run dev:prod` | 以生产配置本地起服务(排查用) | `.env.production` |
|
||
|
||
配置文件说明:
|
||
|
||
| 文件 | 是否提交 | 说明 |
|
||
|---|---|---|
|
||
| `.env.development` | ✅ | 团队共享的开发配置,接口指向本地后端 |
|
||
| `.env.production` | ✅ | 团队共享的生产配置,接口指向线上 |
|
||
| `.env.example` | ✅ | 变量总览模板,新增变量时同步更新 |
|
||
| `.env.local` | ❌ | 个人通用覆盖 |
|
||
| `.env.<环境>.local` | ❌ | 个人针对某环境的覆盖,优先级最高 |
|
||
| `.env` | ❌ | 历史遗留的个人配置,优先级最低 |
|
||
|
||
优先级(高 → 低):
|
||
**进程环境变量 > `.env.<环境>.local` > `.env.<环境>` > `.env.local` > `.env`**
|
||
|
||
只有「变量尚未定义」时才会被下一层填充,因此高优先级不会被低优先级顶掉,
|
||
`.env` 里残留的本地地址也不会再污染生产包。
|
||
|
||
发布前可自查产物是否干净:
|
||
|
||
```bash
|
||
grep -rl "127.0.0.1" .output/ || echo "产物干净,无本地地址"
|
||
```
|
||
|
||
## 模板系统
|
||
|
||
模板存放在 `app/templates/` 目录下,每个模板独立目录,包含:
|
||
|
||
- `config.ts`:模板配置
|
||
- `components/`:模板私有组件(Header、Footer 等)
|
||
- `pages/`:模板页面组件
|
||
- `theme.css`:模板主题变量
|
||
|
||
当前仅保留:
|
||
- `template-07`:科技蓝商务深色模板(汇吉采唯一在用模板)
|
||
|
||
> 其余模板(template-01~06、08~10)已删除(多租户 SaaS 时代遗留)。模板动态加载机制保留:
|
||
> 新增模板时建目录并在 `app/templates/index.ts` 注册即可。
|
||
|
||
## 环境变量清单
|
||
|
||
完整变量说明见 `.env.example`。核心变量:
|
||
|
||
```bash
|
||
# 租户 / 模板(生产留空,由域名自动识别)
|
||
NUXT_PUBLIC_TENANT_ID=
|
||
# 应用产品 ID(app_product.product_id 数字主键,如 42;不是 productCode 'website')
|
||
NUXT_PUBLIC_APP_ID=42
|
||
NUXT_PUBLIC_TEMPLATE_ID=
|
||
|
||
# 接口地址(单一后端:内容/CMS、租户解析、模板解析全部走 api.gxhuijicai.com)
|
||
NUXT_PUBLIC_MODULES_API_BASE=https://api.gxhuijicai.com/api
|
||
NUXT_PUBLIC_APP_API_BASE=https://api.gxhuijicai.com
|
||
|
||
# 多租户域名(官网主域 gxhuijicai.com 居首;其余为平台遗留主域,共存保留)
|
||
NUXT_PUBLIC_BASE_DOMAINS=gxhuijicai.com,shoplnk.cn,sitelink.cn,wsdns.cn
|
||
```
|
||
|
||
> ℹ️ `nuxt.config.ts` 内置的接口默认值已统一为 `https://api.gxhuijicai.com`(单后端)。
|
||
> `.env.production` 中也显式指定同一地址。
|
||
> 若将来再次更换域名,请同步修改 `nuxt.config.ts`、`.env.production` 与 `.env.example`。
|
||
|
||
## 接口说明
|
||
|
||
本项目通过 `server/api/` 代理转发 SaaS 后端接口,前端不直接调用后端地址。
|
||
|
||
核心接口:
|
||
- `GET /api/site/info`:站点信息
|
||
- `GET /api/page/all`:页面列表
|
||
- `GET /api/page/detail?slug=xxx`:页面详情
|
||
- `GET /api/article/list`:文章列表
|
||
- `GET /api/product/list`:产品列表
|
||
- `GET /api/case/list`:案例列表
|
||
- `GET /api/subscription/status`:订阅状态
|
||
- `GET /api/sitemap.xml`:动态站点地图
|
||
- `GET /api/robots.txt`:robots 文件
|
||
- `POST /api/form/submit`:表单提交
|
||
|
||
## 部署
|
||
|
||
```bash
|
||
npm run build
|
||
npm run preview
|
||
```
|
||
|
||
生产环境建议使用 Nginx 反向代理,配置泛域名 `*.gxhuijicai.com` 指向 Nuxt 服务。
|
||
|
||
## 注意事项
|
||
|
||
- 模板组件为动态导入,新增模板后需在 `app/templates/index.ts` 注册
|
||
- 域名绑定查询接口 `/cms/cms-website/resolveDomain` 需 SaaS 后端实现
|
||
- 订阅状态接口 `/api/app/subscription/check` 需 SaaS 后端实现
|