31 lines
1.1 KiB
YAML
31 lines
1.1 KiB
YAML
|
|
# Module Spec:vab-search(菜单搜索:Ctrl/⌘+K)
|
|||
|
|
|
|||
|
|
module:
|
|||
|
|
id: vab-search
|
|||
|
|
name: VabSearch(菜单搜索)
|
|||
|
|
type: ui
|
|||
|
|
entrypoints:
|
|||
|
|
- library/components/VabSearch/index.vue
|
|||
|
|
|
|||
|
|
public_api:
|
|||
|
|
concept:
|
|||
|
|
- "通过 Ctrl/⌘+K 或点击图标打开搜索面板(teleport 到 body)"
|
|||
|
|
- "从 routes store 的 getRoutes 平铺菜单项并模糊搜索"
|
|||
|
|
- "维护本地搜索历史 localStorage(key=vab_search_history)"
|
|||
|
|
|
|||
|
|
dependency_closure:
|
|||
|
|
runtime:
|
|||
|
|
- "store-routes:getRoutes(菜单路由来源)"
|
|||
|
|
- "vue-router:useRouter(router.push 内链跳转)"
|
|||
|
|
- "浏览器 API:window.addEventListener('keydown'), navigator.userAgent, localStorage"
|
|||
|
|
- "VabIcon:搜索图标与历史删除图标"
|
|||
|
|
|
|||
|
|
acceptance:
|
|||
|
|
- "Ctrl/⌘+K 可打开/关闭面板(Escape 关闭)"
|
|||
|
|
- "输入关键字能过滤菜单并 Enter 跳转"
|
|||
|
|
- "搜索历史能写入/删除/清空"
|
|||
|
|
|
|||
|
|
pitfalls:
|
|||
|
|
- "该组件包含较多样式与 DOM 交互(teleport/fixed mask);抽取到新项目需确保全局样式/层级不冲突"
|
|||
|
|
- "菜单来源依赖 routes store 已完成 setRoutes;否则列表为空"
|