前端开发
在 Fusion 框架应用中为页面接入帮助中心(创建…
当需要给使用 PageLayout 的应用页面添加上下文帮助按钮、打开对应帮助文章时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 Fusion 框架应用中为页面接入帮特定
解决思路
- 先检查目标应用是否已有帮助接入:搜索 apps/{app-name}/src/**/helpArticles.ts、apps/{app-name}/src/**/fusionHelpArticles.ts,以及 useHelpCenter 的 import;若已有部分接入则扩展而非重复添加。
- 确定 slug 命名约定:若应用已有常量文件则沿用其命名模式;否则使用 {app-name}-{page-kebab} 约定(新应用优先使用带前缀的约定以避免跨应用 slug 冲突)。
- 创建或更新常量文件(默认 src/constants/helpArticles.ts),导出 FUSION_HELP_ARTICLES 对象:键为与页面概念对应的 SCREAMING_SNAKE_CASE,值为 kebab-case 的 slug 字符串。
- 在每个使用 PageLayout 的目标页面组件中添加 import,顺序为:外部依赖、@fra/*、@/* 别名、相对路径;例如 import { useHelpCenter } from '@equinor/fusion-framework-react-app/help-center';、import { PageLayout } from '@fra/ui';、import { FUSION_HELP_ARTICLES } from '@/constants/helpArticles';。
- 在组件体内解构 hook:const { openArticle, openReleaseNotes } = useHelpCenter();;若不需要发布说明则只解构 { openArticle }。
- 向 PageLayout 传入 props:openHelpArticle={() => openArticle(FUSION_HELP_ARTICLES.PAGE_NAME)} 和 openReleaseNotes={openReleaseNotes};注意 openHelpArticle 必须是回调包装 () => openArticle(slug),不能直接传引用。
- 验证接入:运行 pnpm --filter {app-name} exec tsc --noEmit 做类型检查;运行 pnpm --filter {app-name} exec eslint src/ 做 lint;目视检查页面头部是否显示 info-circle (ⓘ) 图标,点击后是否打开 Fusion Help 侧边栏。
- 与已发布内容交叉核对:FUSION_HELP_ARTICLES 中每个 slug 必须对应已发布文章;若文章不存在,指向 fusion-help-docs 进行编写,常量中的 slug 必须与 help-articles.json 中的 slug 字段完全一致,文章通过 fhelp 按环境发布。
- 输出结果:创建/更新常量文件中的文章 slug 映射;为目标页面接入 useHelpCenter 与 PageLayout props;确保 TypeScript 编译通过;列出需要对应帮助文章的 slug 清单以便交接给 fusion-help-docs。
- 安全约束:未经确认绝不臆造 slug 名称;不要修改 @fra/ui 组件(PageLayout、PageHeader、FusionHelpButton 已支持帮助 props);不要新增依赖(@equinor/fusion-framework-react-app 已在每个应用中);遵循应用的 import 别名约定(多数应用使用 @/* → src/*);遵循现有代码风格(类型导入用 type,保持 import 分组顺序);不要重复接入帮助(页面已有 useHelpCenter 时扩展而非重新添加);应用自动推导的 slug 前先与用户确认,错误 slug 会静默失败(不显示文章)。
适用边界 · 注意事项
- 编写 markdown 帮助文章(应使用 fusion-help-docs)
- 直接调用 Help 服务的 REST API(应使用 fusion-help-api)
- 修改 @fra/ui 共享组件(PageLayout、PageHeader、FusionHelpButton)
- 非 Fusion 框架应用或本 monorepo 之外的应用