Files
hjc-web/README.md
T
weicw-dshsa 4a5a8f306a fix: NUXT_PUBLIC_APP_ID 改为数字主键,接口基址切正式域名
1. appId 语义修正
   NUXT_PUBLIC_APP_ID 之前填的是 productCode('website'),但下游拿它去请求
   /api/app/product/detail/{productId},后端按 Integer 解析主键,于是转换失败。
   改为 app_product.product_id 数字主键(种子数据为 42);nuxt.config.ts 的
   缺省值同步去掉 'website' 回退——留空时下游按空值降级,绝不回退到编码值。

2. 接口基址切 hjc-api.sitelnk.cn
   .env.example / .env.production / nuxt.config.ts 的缺省值与 preconnect、
   dns-prefetch 一并从 hjc-api.websoft.top 改为正式域名;scripts/ 与
   outputs/ 文档里的旧地址同步更新。

注:本提交含若干文件的 CRLF/LF 行尾归一,实际内容改动见 git diff --ignore-cr-at-eol。
2026-09-25 05:22:58 +08:00

147 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 通用企业官网程序
基于 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-01`:科技蓝企业模板(完整)
- `template-02` ~ `template-04`:占位模板,后续根据设计稿实现
## 环境变量清单
完整变量说明见 `.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、租户解析、模板解析全部走 hjc-api)
NUXT_PUBLIC_MODULES_API_BASE=https://hjc-api.sitelnk.cn/api
NUXT_PUBLIC_APP_API_BASE=https://hjc-api.sitelnk.cn
# 多租户域名
NUXT_PUBLIC_BASE_DOMAINS=shoplnk.cn,sitelink.cn,wsdns.cn
```
> ℹ️ `nuxt.config.ts` 内置的接口默认值已统一为 `https://hjc-api.sitelnk.cn`(单后端)。
> `.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 反向代理,配置泛域名 `*.shoplnk.cn` 指向 Nuxt 服务。
## 注意事项
- 模板组件为动态导入,新增模板后需在 `app/templates/index.ts` 注册
- 域名绑定查询接口 `/cms/cms-website/resolveDomain` 需 SaaS 后端实现
- 订阅状态接口 `/api/app/subscription/check` 需 SaaS 后端实现