피드로 돌아가기
I Rebuilt the Cmd-K Command Palette in ~60 Lines of JavaScript
Dev.toDev.to
Frontend

60라인의 Vanilla JS로 구현한 고효율 Command Palette 설계

I Rebuilt the Cmd-K Command Palette in ~60 Lines of JavaScript

Devanshu Biswas2026년 6월 17일2beginner

Context

복잡한 UI 컴포넌트 없이 사용자 경험을 극대화하는 빠른 명령 실행 인터페이스 요구. 기존의 단순 문자열 매칭 방식으로는 사용자 입력 오차를 수용하는 유연한 검색 경험 제공에 한계 존재.

Technical Solution

  • document-level listener 기반의 Global Shortcut 구현 및 preventDefault를 통한 브라우저 기본 동작 제어
  • UI 마크업 의존도를 제거하기 위해 각 명령을 객체화한 Data-Driven 구조 설계
  • 단일 포인터를 활용한 Subsequence Match 로직 구현으로 입력 순서 기반의 Fuzzy Filtering 처리
  • Modulo 연산을 적용한 Selection Index 관리로 끊김 없는 Keyboard Navigation 구현
  • Overlay 활성화와 동시에 Input Focus를 강제하는 즉각적 UX 흐름 설계

- 복잡한 UI 상태 관리 전 데이터 구조(Command Object) 설계 우선 검토 - 단순 substring 검색 대신 Subsequence Match 알고리즘 적용으로 검색 편의성 개선 - Keyboard-first 인터페이스 설계 시 Focus 제어와 Shortcut 충돌 방지 처리 확인

원문 읽기