3分钟快速上手:vue-command-palette 安装与第一个 Cmd+K 弹窗教程
2026/8/27 15:46:45 网站建设 项目流程

3分钟快速上手:vue-command-palette 安装与第一个 Cmd+K 弹窗教程

【免费下载链接】vue-command-palette⌨️ A fast, composable, unstyled command palette interface for Vue.项目地址: https://gitcode.com/gh_mirrors/vu/vue-command-palette

vue-command-palette 是一个专为 Vue 3 打造的快速、可组合、无样式的命令面板(Command Palette)库。只需一行安装命令加上几行模板代码,你就能看到熟悉的 macOS Spotlight、Raycast 式 Cmd+K 弹窗在自己项目中工作,并支持模糊搜索与自定义快捷键。本文带你走完「安装 → 弹窗 → 快捷键」最短路径。

为什么需要 Vue 命令面板

命令面板让用户用键盘而不是鼠标完成高频操作——输入几个字符,模糊搜索,回车确认。它在 Vercel、Linear、Raycast 等产品中已成标配,而vue-command-palette正是把这套体验搬进 Vue 的开源方案:

  • 🧩 命名空间组合式组件(Command.InputCommand.List等),结构清晰
  • 💄 完全无样式(unstyled),自带data-属性,样式全由你掌控
  • 🔍 内置 fuse.js 模糊搜索
  • ⌨️ 支持给命令绑定自定义快捷键

第一步:一行命令安装 vue-command-palette

打开你的 Vue 3 项目,用任意包管理器安装:

pnpm add vue-command-palette # 或 yarn add vue-command-palette # 或 npm install vue-command-palette

如果想直接阅读官方 Demo 源码,也可以克隆仓库:

git clone https://gitcode.com/gh_mirrors/vu/vue-command-palette

依赖很轻,核心运行库只有fuse.js(模糊搜索)和nanoid(生成唯一 key),对首屏体积非常友好。

第二步:搭建第一个 Cmd+K 命令弹窗

新建一个组件,导入Command组合组件,并用visible状态控制弹窗显隐:

<script lang="ts" setup> import { ref } from 'vue' import { Command } from 'vue-command-palette' const visible = ref(false) </script> <template> <button @click="visible = true">打开命令面板 ⌘K</button> <Command.Dialog :visible="visible" theme="custom"> <template #header> <Command.Input placeholder="输入命令或搜索..." /> </template> <template #body> <Command.List> <Command.Empty>未找到结果</Command.Empty> <Command.Group heading="偏好设置"> <Command.Item @select="visible = false">切换暗色模式</Command.Item> <Command.Item>切换语言</Command.Item> </Command.Group> <Command.Item>新建项目</Command.Item> </Command.List> </template> </Command.Dialog> </template>

结构说明:

组件作用对应 DOM 属性
Command.Dialog弹窗容器,Teleport 到 body,提供 header/body/footer 插槽command-dialog
Command.Input搜索输入框,支持模糊搜索command-input
Command.List命令列表容器command-list
Command.Groupheading分组command-group
Command.Item单个命令项,可选中、执行command-item
Command.Empty搜索无结果时自动显示command-empty

第三步:绑定 Cmd+K 快捷键

官方推荐用@vueuse/coreuseMagicKeys监听按键(不是只能用 Cmd+K,任意组合键都可以):

<script lang="ts" setup> import { ref, watch } from 'vue' import { useMagicKeys } from '@vueuse/core' const visible = ref(false) const keys = useMagicKeys() const CmdK = keys['Meta+K'] // macOS 的 Cmd,Windows 可用 'Control+K' watch(CmdK, (v) => { if (v) visible.value = true }) </script>

现在按Cmd + K弹窗打开,按Esc或点击遮罩关闭——一套完整的 Cmd+K 体验已经跑起来了。

命令面板样式与动画:无样式反而更自由

库本身不带任何样式,每个组件都输出command-前缀的data-属性,直接写 CSS 即可,例如:

[command-root] { background: #fff; }

两个内置动画技巧:

  • 弹窗进出场动画Command.Dialog内部已包裹 Vue 的 Transition,动画名为command-dialog,写对应的.command-dialog-enter-active等类名即可;
  • 列表高度动画:通过 CSS 变量--command-list-height过渡,列表过滤时高度会平滑变化。

进阶:选中事件与执行命令

  • Command/Command.Dialog上监听select-item事件,拿到ItemInfo(含keyvalue);
  • Command.Item支持:perform属性传入执行函数、:shortcut展示快捷键提示、:data-value指定参与模糊搜索的值;
  • useCommandState()组合式函数可读取当前搜索词与过滤结果。

完整的命令面板示例可以直接参考官方 Demo 中的 Self.vue,以及各主题的样式方案 algolia.scss 与 raycast.scss。

核心文件导航

  • 组件总入口:packages/index.ts
  • 弹窗实现:packages/CommandDialog.vue
  • 类型定义:packages/types.ts
  • 项目说明与全部用法:README.md

到这里,你已经掌握了 vue-command-palette 安装、Cmd+K 命令弹窗搭建、快捷键绑定和样式定制的完整流程。下一步不妨照着 Demo 给列表加上图标和分组,把它变成产品里真正的主打交互。

【免费下载链接】vue-command-palette⌨️ A fast, composable, unstyled command palette interface for Vue.项目地址: https://gitcode.com/gh_mirrors/vu/vue-command-palette

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询