完善页面细节3

This commit is contained in:
2026-02-25 15:44:38 +08:00
parent 1924272182
commit 4bb876e60e
8 changed files with 415 additions and 272 deletions

View File

@@ -1930,3 +1930,60 @@ const iconMap: Record<string, string> = {
1. **标准化 Script 标签**:统一使用 `<script setup lang="uts">``<script lang="uts">`(配合 `defineComponent`)。
2. **规范响应式声明**:避免在 `reactive` 上直接使用泛型(如 `reactive<T>(...)`),应使用类型断言 `reactive(...) as T`
3. **避免遗留的 Options API 写法**:尽量将旧的 `export default { data(), methods() }` 结构转换为 Composition API 模式,以获得最佳的 UTS 编译支持。
### 原因二十三AdminLayout 循环依赖导致 500 错误 (Circular Dependency)
**问题描述:**
在 H5 环境下,为某个子页面添加 `AdminLayout` 包裹后Vite 或编译器报错 `500 Internal Server Error (ERR_ABORTED)`,且页面无法加载。
**原因:**
1. **依赖闭环**`AdminLayout` 导入了侧边栏和路由逻辑,路由逻辑引用了 `adminComponentMap.uts`,而映射表又导入了所有子页面组件。
2. **递归调用**:如果子页面组件再次导入 `AdminLayout` 试图自我包裹,就会形成死循环依赖,导致 Vite 开发服务器或编译后的模块加载失败。
**解决方案:**
1. **分层包裹架构**:所有注册在 `adminComponentMap.uts` 中的“子页面组件”**必须禁止** 导入和使用 `AdminLayout`
2. **统一入口提供布局**:由父级容器(如 `admin/index.uvue` 或顶层路由组件)负责一次性提供 `AdminLayout` 框架。
### 原因二十四:标签切换/动态显显引起的高度抖动 (Layout Jitter)
**问题描述:**
使用 `v-if` 在不同配置标签间切换,或者动态显示/隐藏表单项时外部卡片Card的尺寸会突然跳动影响视觉稳定性。
**解决方案:**
1. **预设最小高度**:在 `config-card``config-body` 上显式设置 `min-height`(如 `550px``600px`),确保即使内容较少,容器高度也保持不变。
2. **容器钳制**:确保 `min-height` 足够覆盖该页面中所有可能出现的最高配置项组合。
### 原因二十五:边距一致性与像素级对齐 (Margin Consistency)
**问题描述:**
页面顶部标题、内容卡片、底部边距在不同页面不一致。例如:有些页面顶部紧贴 breadcrumb有些页面底部多出大量空白左右间距不统一。
**解决方案:**
1. **容器级 padding 置空**:子页面根组件(如 `.admin-page`)应设置 `padding: 0`,完全信任 `AdminLayout.uvue``.content-inner` 提供的 `20px` 标准边距 (`--admin-page-padding-desktop`)。
2. **三段式间距 (20px 规则)**
- **Header-to-Content Gap (20px)**: 顶部白色标题栏与下方内容卡片之间,统一定义 `margin-top: 20px`
- **External Padding (20px)**: 由框架层 `.content-inner` 提供全局 20px 间距,确保页面四周留白均匀。
3. **内容区域一致性**:所有装修类的预览组件(如 `.preview-column`)和管理卡片(如 `.manage-card`)应通过这种 20px 的分层间距保持视觉节奏一致。
### 原因二十六:装修模块的“白色背景卡片”统一化 (Unified White Card Pattern)
**问题描述:**
装修Decoration和设计Design模块中预览区PhonePreview和设置区Settings如果背景色参差不齐灰白交替或使用独立阴影的小卡片会显得界面琐碎且不专业。
**解决方案:**
1. **大卡片容器化**:将左侧预览、中间预览、右侧配置等所有相关内容全部封装在一个 `.main-card``.card-container` 白色背景容器内,并使用统一阴影 (`0 2px 12px 0 rgba(0, 0, 0, 0.05)`)。
2. **示例应用 - 主题风格 (theme-style.uvue)**
- 移除原有的多个独立预览 Card统一至一个大背景。
- 颜色选择项ThemeItem重构为带有 1px 细边框和特定圆角的微型容器。
- 预览手机MockPhone间距固定为 30px并确保在容器内水平平铺。
3. **避免深色背景块**:在配置表单内部,尽量避免使用深灰色(如 `#f6f8fb`)背景块,改用白色背景加浅灰色细边框 (`1px solid #f0f0f0`),使整体视觉更加通透一致。
4. **内部列间距对齐**左边栏MenuSide、中预览PhonePreview、右配置Settings的内部 Padding 应维持在 30px-40px 左右,确保内容呼吸感一致。
---
这个指南现在涵盖了 uni-app-x 项目开发中最常见的 26 类问题,为后续开发提供了完整的故障排除和标准化指导。 🚀