diff --git a/docs/活动页/建页/建页执行流程.md b/docs/活动页/建页/建页执行流程.md index 5d66884..00a1be4 100644 --- a/docs/活动页/建页/建页执行流程.md +++ b/docs/活动页/建页/建页执行流程.md @@ -143,13 +143,14 @@ page.config.js 是 md 的结构化落地结果,不能脱离 md 自行新增业 如果发现 page.config.js 或 index.vue 与 md 不一致,优先询问或按 md 同步,而不是反向猜测 md。 生成 vue 页面时必须渐进式生成:先生成可预览底座,再按用户后续指令逐个补模块和接口。 可预览底座只包含预加载、组件引用、图片工具、背景、基础顶部、标签容器和空内容占位,方便用户实时预览页面效果。 -新建页面只要生成 `index.vue`,必须补充统一加载动画:模板首层使用 `v-if="isLoading"` 展示居中的 `LoadingContent`,主页面内容使用 `v-else`,避免加载阶段提前挂载背景图和业务节点。`isLoading` 默认为 `true`,进入页面时至少执行一次 `completePreloading()`;即使 blocking 预加载列表为空,也要通过 `finally` 关闭 loading,防止页面卡死。 +新建页面只要生成 `index.vue`,必须补充统一加载动画:模板首层使用 `v-if="isLoading"` 展示居中的 `LoadingContent`,主页面内容使用 `v-else`,避免加载阶段提前挂载背景图和业务节点。`isLoading` 默认为 `true`,进入页面时至少执行一次 `completePreloading()`;`completePreloading()` 只负责阻塞图片预加载,不等待业务接口;即使 blocking 预加载列表为空,也要通过 `finally` 关闭 loading,防止页面卡死。 +页面只要使用接口,就必须从 `@/utils/appConnector.js` 引入 `connectToApp`,并在 `onMounted` 中先调用 `connectToAppHandler()`;所有初始化业务接口和需要请求头的接口必须放在 `connectToApp(() => { loadInitialPageData() })` 成功回调之后执行,确保 App 请求头已写入。图片预加载和接口初始化要拆成独立方法,允许并行启动,但 loading 动画只由图片预加载控制。 业务模块不得一次性全部生成;抽奖、任务、排行榜、奖励、弹窗、接口对接都要等用户明确说生成哪一块再做。 页面中的规则、奖励、历史、结果等弹窗模块必须统一使用公共组件 `src/components/MaskLayer.vue` 作为遮罩层和背景滚动锁定容器;弹窗内容放入默认插槽,需要点击遮罩空白关闭时,在插槽内再包一层全屏内容容器并使用 `@click.self` 关闭。 开发预览阶段,样式优先靠近结构:能直接用内联样式表达的固定不变、一次性布局尺寸、间距、定位,直接写在模板内联样式里,方便实时调整并减少不必要的 class 拆分;可复用样式、状态样式、伪类/媒体查询/RTL 规则、复杂模块样式仍使用 class。 动态样式不要优先使用 `:style="{ ... }"` 对象写法;涉及状态切换、选中态、方向、显隐、尺寸变化等动态效果时优先切换 class。只有必须绑定运行时数值且不适合枚举成 class 时,才使用动态 style。 内联样式和 class 在普通静态场景下性能差异通常很小;需要避免的是大量节点重复生成动态 style 对象、频繁变更大段内联样式。开发结束或模块稳定后,再按复用性和可维护性统一抽成 class。 -使用 `itemCenter` 承载图片背景时,必须给组件写入按图片比例计算出的 `min-height`,避免图片未加载时内部信息挤在一起。计算方式:先确认组件在页面中的展示宽度(单位 vw),再读取图片实际宽高,`min-height = Math.ceil(展示宽度vw * 图片高度 / 图片宽度) + 'vw'`。如果组件放在网格或固定宽度容器里,展示宽度按该容器实际占用的 vw 计算;如果同一背景有多语言图片,取对应语言图片中最高的计算结果。 +普通业务模块一般不要提前设置 `min-height` 和 `line-height`;`min-height` 只在基础页面容器(如 `.full-page` / `.fullPage`)中按需使用。`itemCenter` 的 `min-height` 不在页面初建阶段预设,只在页面开发完成后确实需要稳定图片容器高度时再按图片比例补充;补充时先确认组件展示宽度(单位 vw),再读取图片实际宽高,`min-height = Math.ceil(展示宽度vw * 图片高度 / 图片宽度) + 'vw'`。为避免图片加载出来之前 `itemCenter` 容器高度异常撑高,补充 `min-height` 时同步补一个接近的 `max-height`,默认可按 `max-height = min-height + 1vw` 处理,例如 `min-height: 21vw; max-height: 22vw`。 生成的 Vue 文件统一使用 `