新增文档说明
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
yiqiu
2025-11-20 22:03:28 +08:00
parent ed5e276a38
commit dea00abd75

210
README.md Normal file
View File

@@ -0,0 +1,210 @@
# BlackFruit-UI
BlackFruit-UI品牌名称“主题云”是一套面向云服务商官网场景的静态前端模板。项目围绕“首页 + 产品 + 解决方案 + 文档 + 资讯 + 合作伙伴 + 客户支持”全链路体验打造,所有页面可直接由任意 Web Server 托管同时又兼容服务端模板引擎Smarty/ThinkPHP 风格)以便与现有业务系统整合。
## 目录
1. [项目概述](#1-项目概述)
2. [技术栈与依赖](#2-技术栈与依赖)
3. [目录结构](#3-目录结构)
4. [核心页面与脚本职责](#4-核心页面与脚本职责)
5. [公共模板与数据注入机制](#5-公共模板与数据注入机制)
6. [接口与数据契约](#6-接口与数据契约)
7. [本地预览、联调与部署](#7-本地预览联调与部署)
8. [自定义与二次开发指引](#8-自定义与二次开发指引)
9. [常见问题与调试建议](#9-常见问题与调试建议)
10. [维护清单](#10-维护清单)
## 1. 项目概述
BlackFruit-UI 提供 40+ 个静态 HTML 页面,覆盖品牌展示、产品售卖、行业方案、内容资讯、客服支持、合作推广及活动营销等业务场景。通过极少量的 JavaScript 调用 `/console/v1/*` 系列接口即可完成动态数据渲染,适合作为现成模板嵌入到任意云产品后台或 IDC 运营系统中。
### 1.1 功能亮点
- **纯前端实现**:无需打包/编译,部署即用;文件结构可直接复制到 Nginx/Apache/OSS 等静态资源服务。
- **模板可复用**:广泛使用 `{include file=""}``{if}``{foreach}` 等服务端模板语法,方便与现有 PHP/Smarty/ThinkPHP 项目拼装。
- **统一脚本与样式**`common/common.js``common/*.css` 封装了登录态、导航、常见交互;`css/*.less` 与编译后的 `.css` 同时提供,便于定制主题。
- **丰富页面库**覆盖云服务器、物理裸机、域名、ICP、短信、SSL、托管等产品页以及 8+ 行业解决方案、新闻公告、文档中心、合作伙伴与营销活动。
- **可插拔扩展**内置域名插件、AI 知识库插件占位;通过 `addons_js` 和后端配置即可按需启用。
- **多端适配**:默认宽度 1400px提供缩放逻辑应对 10001440px 视口;图片资源集中在 `assets/` 便于统一管理。
### 1.2 页面覆盖
| 模块 | 入口文件 | 功能概要 |
| --- | --- | --- |
| 首页与品牌 | `index.html``about.html` | 首页 banner、产品入口、荣誉/合作伙伴展示、新闻公告、AI 插件;关于页提供里程碑、核心指标、价值观等板块。 |
| 产品与服务 | `cloud.html``dedicated.html``rent.html``trusteeship.html``sms.html``ssl.html``trademark.html``icp.html``domain*.html` | 横幅、配置卡片、套餐列表、优势场景、CTA 按钮;域名模块支持插件与静态模式。 |
| 行业解决方案 | `solution.html``solution/*.html` | 展示多行业痛点、解决方案、推荐产品、应用场景与价值收益。 |
| 资讯公告 | `news.html``news-classify.html``news-details.html``announce.html``announce-details.html` | 新闻/公告分类、分页、详情页及推荐阅读。 |
| 文档中心 | `document.html``document-result.html``document-view.html``document-details.html` | 支持搜索、分类展示、树形导航示例与详情模板。 |
| 合作伙伴与推广 | `partner/agent.html``partner/cps.html``partner-agent.html``partner-reward.html` | 代理合作、CPS 推广新版/旧版页面,含流程、权益与 FAQ。 |
| 客户支持 | `contact.html``feedback.html``service-guarantee.html``recruit.html` | 联系我们、意见反馈、服务保障、招聘等互动场景。 |
| 营销活动 | `activities.html` | 限量秒杀、爆款特惠、优惠礼包等活动模块,含倒计时和弹窗示例。 |
## 2. 技术栈与依赖
- **模板引擎**:使用 `{include file=""}``{if}``{foreach}` 等语法,建议在 ThinkPHP、Smarty 或任意支持同类语法的模板引擎下使用。
- **JavaScript 生态**
- 核心库:`vender/jQuery/jquery-3.5.1.min.js``vender/bootstrap/``vender/swiper/``js/viewer.min.js`
- 插件:`jquery.SuperSlide2.1.2.js`(里程碑滑块)、`swiper.animate.min.js`(动画)、`viewer.min.js`(荣誉图片预览)。
- **样式资源**
- `common/reset.css``common/style.css``common/theme.css``common/common.css` 负责全局重置、布局和导航等模块。
- `css/*.less``css/*.css` 成对出现,可根据 `.less` 二次编译自定义色彩和字体。
- `assets/font/` 存放 IconFont`assets/img/` 按模块拆分背景与插画。
- **运行要求**:静态文件即可运行;若需远程数据,需提供 `/console/v1/*` REST 接口并开通跨域或反向代理。
## 3. 目录结构
```text
BlackFruit-UI/
├─ index.html / about.html / cloud.html / ... # 各业务页面(共 40+
├─ header.html & footer.html # 顶部/底部模板入口
├─ public/ # header、footer 片段与悬浮工具条
├─ common/
│ ├─ reset.css / style.css / theme.css # 全局样式
│ ├─ common.css # header、footer、浮窗等通用块
│ └─ common.js # 登录态、导航、表单、全局配置
├─ css/ # 页面级样式与 less 源文件
├─ js/ # 页面级脚本、数据交互与插件初始化
├─ assets/
│ ├─ font/ # iconfont.ttf/.woff/.css
│ └─ img/ # 图片资源index/cloud/solution/...
├─ vender/ # 第三方库Bootstrap/jQuery/Swiper/animate
├─ solution/ # 行业解决方案详情页
├─ partner/ # 新版代理与 CPS 页面
└─ theme.jpg / favicon.ico # 预览封面、站点图标
```
## 4. 核心页面与脚本职责
| JS / 模块 | 关联页面 | 主要职责 | 相关接口 |
| --- | --- | --- | --- |
| `common/common.js` | 全站 | 登录态渲染、顶部/底部数据填充、消息弹窗、导航 hover、招聘 Tab/FAQ 切换、窗口缩放适配、公共按钮跳转。 | `GET /console/v1/account``GET /console/v1/certification/info``GET /console/v1/common` |
| `js/index.js` | `index.html` | 读取站点荣誉/案例、初始化 Swiper、使用 Viewer 弹窗预览、请求公告/新闻列表并跳转到详情。 | `GET /console/v1/common``GET /console/v1/announcement``GET /console/v1/news` |
| `js/about.js` | `about.html` | 展示荣誉、合作伙伴、发展历程、SuperSlide 横向滑动。 | `GET /console/v1/common` |
| `js/activities.js` | `activities.html` | 活动倒计时、弹窗开关与 CTA 按钮占位。 | 静态/业务自定义 |
| `js/product.js` | 产品页(云服务器/物理机等) | 切换地域/配置 Tab、高亮已选套餐、滚动动画。 | 静态/可接入业务 API |
| `js/domain.js` & `js/buy_domain.js` | `domain.html``domain_buy.html` | 读取 `addons_js` 判定是否启用域名插件,加载后缀与跳转链接,提供弹窗示例。 | `GET /console/v1/idcsmart_domain/config``GET /console/v1/idcsmart_domain/domain_suffix` |
| `js/document_index.js` / `js/document_result.js` / `js/document.js` | 文档中心 | 分类列表、搜索结果聚合、树形导航展开/收起、空状态提示。 | `GET /console/v1/help` |
| `js/news.js` / `js/news-classify.js` / `js/news-details.js` | 新闻中心 | 分类 Tab、分页、详情页上一条/下一条推荐、相关资讯列表。 | `GET /console/v1/news/type``GET /console/v1/news``GET /console/v1/news/{id}` |
| `js/announce.js` / `js/announce-details.js` | 公告中心 | 分类过滤、分页器、详情页跳转。 | `GET /console/v1/announcement/type``GET /console/v1/announcement``GET /console/v1/announcement/{id}` |
| `js/consult.js` | `contact.html` | 联系我们表单校验与提交、自定义 Toast、售前售后入口跳转。 | `POST /console/v1/consult` |
| `js/feedback.js` | `feedback.html` | 动态渲染反馈类型、表单验证、提交后清空表单。 | `GET /console/v1/common``POST /console/v1/feedback` |
| `js/ai.js` | 所有页面(按需) | 解析 `<html id="addons_js" addons_js='[]'>`,若包含 `AiKnowledge` 则加载 `/plugins/addon/ai_knowledge/template/clientarea/ai-dialog.js` 并初始化浮窗。 | 插件脚本(同域) |
> 其余脚本(如 `js/tools.js`、`js/extend.js` 等)为 Swiper/动画辅助工具,可根据实际页面引用。
## 5. 公共模板与数据注入机制
- **头部结构**`header.html` 引入 meta、CSS、JS`public/header.html` 定义导航结构。若后端传入 `$data.header_nav`,即可覆盖默认导航、二级菜单、图标与跳转方式。无配置时展示静态备选项。
- **底部结构**`public/footer.html` 通过 `$data.config``$data.friendly_link` 渲染承诺、导航分组、企业信息、友情链接与备案。`common/common.js` 会读取 `/console/v1/common` 的数据替换 logo、电话、二维码等占位。
- **登录态展示**:当 `localStorage.jwt` 存在时,全局脚本会以 `Authorization: Bearer <jwt>` 请求 `GET /console/v1/account``GET /console/v1/certification/info`,展示用户名、首字母头像、实名认证标识以及“账户信息/未付款订单/我的工单/退出”菜单。
- **Session 缓存**:接口结果会被写入 `sessionStorage.commentData``sessionStorage.accountInfo``sessionStorage.is_certification`,避免重复请求。开发调试若需刷新数据,请手动清除浏览器缓存或在控制台执行 `sessionStorage.clear()`
- **浏览器跳转**`common/common.js` 统一绑定了登录/注册/控制台/购物车/文档等按钮的跳转逻辑,可根据业务修改路径。
- **插件注入**:在 `<html>` 标签上添加 `id="addons_js"` 并设置 `addons_js='[{"name":"AiKnowledge"}]'` 即可启用 AI 知识库弹窗;其他插件可以扩展 `js/ai.js` 做懒加载。
## 6. 接口与数据契约
所有接口默认以 `JSON` 格式返回 `{ status: 200, data: { ... } }``Authorization` 头部采用 `Bearer <jwt>`。常用接口如下(可根据后端实现调整路径/字段):
- **账号与认证**
- `GET /console/v1/account`:返回 `account.username/avatar/...`;用于顶部登录态。
- `GET /console/v1/certification/info`:返回 `is_certification` 布尔值。
- **站点公共配置**
- `GET /console/v1/common`企业名称、电话、邮箱、二维码、logo、备案、友情链接、荣誉 `honor`、合作伙伴 `partner`、反馈类型 `feedback_type`、产品跳转链接等。
- 响应示例:
```json
{
"status": 200,
"data": {
"enterprise_name": "主题云",
"enterprise_telephone": "400-000-0000",
"enterprise_mailbox": "support@example.com",
"enterprise_qrcode": "/upload/qrcode.png",
"official_website_logo": "/upload/logo.png",
"friendly_link": [
{ "name": "合作伙伴A", "url": "https://example.com" }
],
"honor": [{ "name": "高新技术企业", "img": "/upload/honor.png" }],
"partner": [{ "name": "案例客户", "img": "/upload/case.png", "description": "典型案例" }],
"feedback_type": [{ "id": 1, "name": "产品建议" }],
"cloud_product_link": "/cart/goods.htm?id=1",
"dcim_product_link": "/cart/goods.htm?id=2",
"terms_service_url": "/agreement/service.html",
"terms_privacy_url": "/agreement/privacy.html",
"icp_info": "京ICP备XXXX号",
"icp_info_link": "https://beian.miit.gov.cn/#/Integrated/index"
}
}
```
- **公告/新闻**
- `GET /console/v1/announcement/type``GET /console/v1/announcement``GET /console/v1/announcement/{id}`
- `GET /console/v1/news/type``GET /console/v1/news``GET /console/v1/news/{id}`
- 列表接口默认接受 `page``limit` 参数;详情页根据 URL 参数 `id` 调用。
- **文档中心**
- `GET /console/v1/help`(支持 `keywords` 查询)返回 `category_list``article_list`。跳转链接可指向 `/plugin/26/helpTotal.htm?id=` 等后端页面。
- **域名插件**
- `GET /console/v1/idcsmart_domain/config`:返回默认后缀、跳转地址。
- `GET /console/v1/idcsmart_domain/domain_suffix`:返回后缀数组并指明价格/语言等信息。
- 没有插件时会 fallback 到静态 `.com/.cn` 后缀并弹出“功能暂未开放”提示。
- **互动表单**
- `POST /console/v1/consult``contact.html` 提交公司/联系人/手机/邮箱/问题描述,成功后通过 `showMessage("success", "提交成功", 3000)` 提示。
- `POST /console/v1/feedback``feedback.html` 提交类型、标题、内容、邮箱/电话,字段由 `feedback.js` 校验。
> 建议后端统一返回 `status`、`msg`、`data` 三段式结构,并在需要登录的接口开启 JWT 校验。
## 7. 本地预览、联调与部署
### 7.1 本地预览
1. 克隆或下载项目后进入目录:`cd BlackFruit-UI`
2. 使用任意静态服务器(示例):
```bash
# Python3
python -m http.server 8080
# or Node
npx http-server -p 8080
```
3. 浏览器访问 `http://localhost:8080` 预览。注意:若直接使用 `file://` 打开 HTML`$.ajax` 请求会因同源策略失败。
### 7.2 接口联调
- 将 `/console/v1/*` 代理至后端Nginx `proxy_pass` 或本地 mock 服务)。
- 确保接口支持跨域、携带 `Authorization` header并返回上文约定的字段。
- 调试登录态时在控制台执行 `localStorage.jwt = "<测试 token>"` 以模拟已登录状态。
### 7.3 部署建议
- 将整个目录同步到 Web ServerNginx `root`, Apache `DocumentRoot`, CDN/OSS 等),保持相对路径不变。
- 为 `assets/`、`css/`、`js/`、`vender/` 设置长期缓存HTML 设置较短缓存或协商缓存,方便热更新。
- 若需 HTTPS保证接口与静态资源均在同一协议下避免混合内容警告。
- 可按需要在 Nginx 中配置 `try_files $uri /index.html;` 以支持根路径访问首页。
## 8. 自定义与二次开发指引
- **导航与页脚**:后台传入 `$data.header_nav`、`$data.config`、`$data.friendly_link` 即可动态渲染导航结构、二级菜单图标、友情链接与备案信息。若要新增菜单,可在 `public/header.html` 中复制现有 `nav-item`/`nav-cont-menu` 结构。
- **产品与解决方案扩展**
1. 复制现有页面(如 `cloud.html`)并更名;
2. 引入对应 CSS`css/product.css` 或 `css/solution.css`)和 JS`js/product.js`
3. 替换图文内容或通过后端模板传入动态数据;
4. 保持 CTA 链接指向 `/cart/goods.htm?id=` 或自定义购买页。
- **域名与插件**:通过 `<html id="addons_js" addons_js='[{"name":"IdcsmartDomain"}]'>` 让 `js/domain.js` 触发 API 模式;若缺省则自动进入静态说明模式。
- **AI 知识库**:在 `addons_js` 中添加 `{"name": "AiKnowledge"}` 即可加载 `/plugins/addon/ai_knowledge/template/clientarea/ai-dialog.js`。如需新增插件,可在 `js/ai.js` 中扩展判断逻辑。
- **交互表单**`common/common.js` 已提供 `showMessage`、表单校验示例;如需新增表单,建议复用该组件及 `btn btn-normal` 样式,保持一致的体验。
- **样式主题**:优先修改 `common/theme.css` 或对应 `.less` 文件,然后重新编译为 `.css`(可使用 `lessc css/product.less css/product.css` 等命令)。
- **资源替换**:所有图片集中在 `assets/img/{module}`,替换时保持文件名或同步更新 HTML 引用IconFont 可在 `assets/font/iconfont.css` 中更新 `@font-face`。
## 9. 常见问题与调试建议
- **接口请求 404/跨域**:检查预览方式是否为 `file://` 或接口域名不一致;推荐通过本地静态服务器 + 反向代理保证同域。
- **导航或页脚未渲染**:确认 `common/common.js` 已加载且 `/console/v1/common` 请求成功;可在控制台查看 `sessionStorage.commentData`。
- **登录信息不显示**:需要在浏览器注入有效的 `localStorage.jwt`,并确保接口返回 `status: 200`;否则会回退到“登录/立即注册”按钮。
- **域名插件按钮点击无反应**:检查 `<html>` 上的 `addons_js` 是否包含 `IdcsmartDomain`;没有插件时页面会提示“功能暂未开放”。
- **AI 对话框未加载**:确认插件脚本 URL 可访问,并且 `addons_js` 中包含 `AiKnowledge`。此外需确保 `AIDialog` 构造函数在加载脚本后可用。
- **Viewer 预览空白**`js/index.js` 会将 `#viewer` 图片地址替换为所点图片,若 `assets/img` 路径调整,请同步更新图片引用。
## 10. 维护清单
- **静态资源版本化**:当更新 CSS/JS 时建议在 `header.html` 中追加查询参数(如 `?v=202404`)以便缓存刷新。
- **第三方依赖更新**`vender/` 中的库仍是 3.x 版本,请在升级 jQuery/Bootstrap/Swiper 时同步验证与 `common/common.js` 的兼容性。
- **LESS/CSS 同步**:若修改 `.less`,请记得重新编译生成 `.css`,避免线上引用旧样式。
- **可访问性与 SEO**:合理设置 `<title>`、`<meta name="keywords/description">` 以及图片 `alt` 属性,保证页面友好度。
- **多语言/多站点**:如需多语言版本,可复制整个目录并调整文案,或在模板层根据语言变量输出不同片段。
- **版本控制**:建议将本项目作为子模块或模板仓库,二次开发时维护 Changelog便于同步官方更新。