您当前的位置:首页 > 电脑百科 > 程序开发 > 前端

前端快速实现快捷键功能,超实用!

时间:2023-05-05 11:40:59  来源:前端宝藏  作者:

如今,许多 Web 应用都提供了键盘快捷键。通过使用键盘快捷键,用户可以快速地进行常见任务。在前端开发中,实现键盘快捷键功能需要编写大量的 JAVAScript 代码。为了简化这个过程,出现了一些优秀的前端快捷键工具库。本文将介绍几个流行的前端快捷键工具库,帮助你快速实现键盘快捷键功能!

图片

Mousetrap

Mousetrap 是一个 JavaScript 库,它提供了一种简单的方式来捕获键盘输入,用于创建键盘快捷键等交互式功能。它可以轻松地绑定键盘按键和组合键到回调函数,从而帮助开发者快速实现一些特定的功能,如全屏切换、复制粘贴数据等。Mousetrap 的使用非常方便,只需要引入相应的 JavaScript 文件并设置监听器即可。它支持键盘事件的无冲突处理,也可以在特定的区域禁用或启用监听器。

这个库与其他类似的库相比有以下几个不同之处:

  • 没有外部依赖,不需要使用其他框架
  • 不仅支持 keydown 事件,还可以指定 keypress、keydown 或 keyup 事件,或者直接让 Mousetrap 自动选择。
  • 可以将键盘事件直接绑定到特殊键,如?或*,而无需指定 shift+/ 或 shift+8 等在所有键盘上都不一致的键。
  • 支持国际键盘布局。
  • 可以绑定类似 GmAIl 的键序列,除了常规按键和键组合之外。
  • 可以使用 trigger() 方法编程触发键盘事件。
  • 支持计算机键盘上的数字键。
  • 代码有详细的文档和注释。

Mousetrap 可以通过 npm 安装使用。具体步骤如下:

  1. 打开终端或命令行工具,进入项目目录。运行以下命令来安装 Mousetrap:
npm install mousetrap
  1. 在 JavaScript 文件中引入 Mousetrap:
import Mousetrap from 'mousetrap';
  1. 在需要监听键盘事件的地方,创建相应的监听器:
Mousetrap.bind('command+shift+s', function() {
  // 处理键盘事件的回调函数
});

这里绑定了一个组合键(命令键 + shift 键 + s 键)到回调函数,当用户按下该组合键时,会触发回调函数。

Github:https://github.com/ccampbell/mousetrap

Hotkeys

Hotkeys 是一个用于在 Web 应用中设置和管理键盘快捷键的 JavaScript 库。它允许开发人员使用简单的语法,为应用程序中的各种操作绑定键盘快捷键。这个库可以用来添加、删除和禁用快捷键,还可以与其他 JavaScript 库集成使用。

在一些其他的快捷键库中,开发者可能需要编写大量的代码才能够实现一个简单的功能,而 Hotkeys 库则提供了简洁易用的 API 接口和丰富的事件处理选项。同时,Hotkeys 库具有轻量级、易于使用和灵活可扩展等特点。另外,在 Hotkeys 的官方文档中也提供了详细的文档说明和示例,方便开发人员快速上手使用。

Hotkeys 可以通过 npm 安装使用。具体步骤如下:

  1. 打开终端或命令行工具,进入项目目录。运行以下命令来安装 Hotkeys:
npm install hotkeys-js --save
  1. 在 JavaScript 文件中引入 Hotkeys:
 
import hotkeys from 'hotkeys-js';
  1. 在需要监听键盘事件的地方,创建相应的监听器:
 
hotkeys('ctrl+a,ctrl+b,r,f', function (event, handler){
  switch (handler.key) {
    case 'ctrl+a': alert('you pressed ctrl+a!');
      break;
    case 'ctrl+b': alert('you pressed ctrl+b!');
      break;
    case 'r': alert('you pressed r!');
      break;
    case 'f': alert('you pressed f!');
      break;
    default: alert(event);
  }
});

Github:https://github.com/jaywcjlove/hotkeys-js

Tinykeys

Tinykeys 是一个在Web应用中设置和管理键盘快捷键的JavaScript库,它比Hotkeys更加轻量级和易于使用。该库允许开发人员通过一行代码来为应用程序中的各种操作绑定键盘快捷键。与Hotkeys类似,Tinykeys也具有添加、删除和禁用快捷键以及与其他JavaScript库集成使用的功能。

Tinykeys 可以通过 npm 安装使用。具体步骤如下:

  1. 打开终端或命令行工具,进入项目目录。运行以下命令来安装 Tinykeys:
npm install tinykeys
  1. 在需要使用Tinykeys的JavaScript文件中,通过import语句导入Tinykeys库:
import tinykeys from 'tinykeys';
  1. 使用tinykeys()方法将键盘按键映射到需要执行的功能。例如:
tinykeys(window, {
  'Shift+Enter': (event) => {
    console.log('Shift+Enter has been pressed');
  }
});

Github:https://github.com/jamiebuilds/tinykeys

useHotkeys

useHotkeys是一个React Hook,用于在React函数组件中设置和管理键盘快捷键。useHotkeys支持大多数键盘和操作系统,并且与其他React Hooks和第三方库兼容。

可以通过以下步骤来安装和使用useHotkeys:

  1. 在命令行中运行以下命令,使用npm安装useHotkeys库:
npm install react-hotkeys-hook
  1. 在需要使用useHotkeys的React函数组件中,通过import语句导入useHotkeys库:
import { useHotkeys } from 'react-hotkeys-hook';
  1. 在组件内部调用useHotkeys() Hook方法来设置键盘快捷键的响应函数及相关配置:
export const ExampleComponent = () => {
  const [count, setCount] = useState(0)
  useHotkeys('ctrl+k', () => setCount(count + 1), [count])

  return (
    <p>
      Pressed {count} times.
    </p>
  )
}

Github:https://github.com/JohannesKlauss/react-hotkeys-hook

其他

很多应用支持使用 cmd(ctrl)+ k 来调出选择框,可以使用快捷键进行后续操作。

图片

Cmdk

⌘K是一个灵活的React组件,可以用于创建命令菜单或可访问的组合框。它支持自定义API,可以通过组合其他组件或静态JSX来实现个性化需求。

图片

使用方式如下:

  1. 安装cmdk:
npm install cmdk
  1. 使用:
 
import { Command } from 'cmdk'

const CommandMenu = () => {
  const [open, setOpen] = React.useState(false)

  // Toggle the menu when ⌘K is pressed
  React.useEffect(() => {
    const down = (e) => {
      if (e.key === 'k' && e.metaKey) {
        setOpen((open) => !open)
      }
    }

    document.addEventListener('keydown', down)
    return () => document.removeEventListener('keydown', down)
  }, [])

  return (
    <Command.Dialog open={open} onOpenChange={setOpen} label="Global Command Menu">
      <Command.Input />
      <Command.List>
        <Command.Empty>No results found.</Command.Empty>

        <Command.Group heading="Letters">
          <Command.Item>a</Command.Item>
          <Command.Item>b</Command.Item>
          <Command.Separator />
          <Command.Item>c</Command.Item>
        </Command.Group>

        <Command.Item>Apple</Command.Item>
      </Command.List>
    </Command.Dialog>
  )
}

Github:https://github.com/pacocoursey/cmdk

Ninja Keys

Ninja Keys 是一个可以集成到网站中的键盘快捷键 UI 组件,支持使用纯 JavaScript、Vue 和 React 来创建自定义的快捷键。在许多应用中,用户会按下 ⌘+k(或 ctrl+k) 打开搜索 UI 界面,Ninja Keys 类似于这一模式。

图片

使用方式如下:

  1. 安装 Ninja Keys:
npm i ninja-keys
  1. 使用:
<script>
  const ninja = document.querySelector('ninja-keys');
  ninja.data = [
    {
      id: 'Projects',
      title: 'Open Projects',
      hotkey: 'ctrl+N',
      icon: 'apps',
      section: 'Projects',
      handler: () => {
        // it's auto register above hotkey with this handler
        alert('Your logic to handle');
      },
    },
    {
      id: 'Theme',
      title: 'Change theme...',
      icon: 'desktop_windows',
      children: ['Light Theme', 'Dark Theme', 'System Theme'],
      hotkey: 'ctrl+T',
      handler: () => {
        // open menu if closed. Because you can open directly that menu from it's hotkey
        ninja.open({ parent: 'Theme' });
        // if menu opened that prevent it from closing on select that action, no need if you don't have child actions
        return {keepOpen: true};
      },
    },
    {
      id: 'Light Theme',
      title: 'Change theme to Light',
      icon: 'light_mode',
      parent: 'Theme',
      handler: () => {
        // simple handler
        document.documentElement.classList.remove('dark');
      },
    },
    {
      id: 'Dark Theme',
      title: 'Change theme to Dark',
      icon: 'dark_mode',
      parent: 'Theme',
      handler: () => {
        document.documentElement.classList.add('dark');
      },
    },
  ];
</script>

Github:https://github.com/ssleptsov/ninja-keys



Tags:前端   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
20k级别前端是怎么使用LocalStorage的,想知道吗?
当咱们把咱们想缓存的东西,存在localStorage、sessionStorage中,在开发过程中,确实有利于咱们的开发,咱们想看的时候也是一目了然,点击Application就可以看到。前言大家好,我是林...【详细内容】
2024-03-26  Search: 前端  点击:(12)  评论:(0)  加入收藏
前端不存在了?盲测64%的人更喜欢GPT-4V的设计,杨笛一等团队新作
3 月 9 日央视的一档节目上,百度创始人、董事长兼 CEO 李彦宏指出,以后不会存在「程序员」这种职业了,因为只要会说话,人人都会具备程序员的能力。「未来的编程语言只会剩下两种...【详细内容】
2024-03-11  Search: 前端  点击:(9)  评论:(0)  加入收藏
前端开始“锈化”?Vue团队开源JS打包工具:基于Rust、速度极快、尤雨溪主导
Vue 团队已正式开源Rolldown &mdash;&mdash; 基于 Rust 的 JavaScrip 打包工具。Rolldown 是使用 Rust 开发的 Rollup 替代品,它提供与 Rollup 兼容的应用程序接口和插件接口...【详细内容】
2024-03-09  Search: 前端  点击:(11)  评论:(0)  加入收藏
两年前端经验还不会手写Promise?
什么是promise?当我们处理异步操作时,我们经常需要进行一系列的操作,如请求数据、处理数据、渲染UI等。在过去,这些操作通常通过回调函数来处理,但是回调函数嵌套过多会导致代码...【详细内容】
2024-03-07  Search: 前端  点击:(23)  评论:(0)  加入收藏
十个前端冷门但好用的前端工具函数库
本文推荐十个冷门但好用的前端工具函数仓库,它们可能没有很高的知名度,但却能为你解决实际问题,提高开发效率。在前端开发中,有时候我们会遇到一些常见的功能需求,但却不知道从哪...【详细内容】
2024-02-27  Search: 前端  点击:(21)  评论:(0)  加入收藏
前端开发:Visual Studio Code和Visual studio如何选?
Visual Studio Code和Visual studio都是微软的集成开发环境(IDE),那么在实际工作中该如何选择呢。贝格前端工场对二者做一番对比,帮助您决策一下。一、Visual Studio Code的介绍...【详细内容】
2024-02-27  Search: 前端  点击:(46)  评论:(0)  加入收藏
网站开发中的前端和后端开发有什么区别
前端开发和后端开发都是干什么的?有哪些区别?通俗地讲,前端干的工作是用户可以直接看得见的,而后端开发的工作主要在服务端,用户不太能直接看到。虽然前端开发和后端开发的工作有...【详细内容】
2024-02-21  Search: 前端  点击:(32)  评论:(0)  加入收藏
一段微信小程序前端与后端连接的代码,带注解
微信小程序的前端和后端连接通常涉及到使用微信小程序提供的网络请求API与后端服务器进行通信。以下是一个简单的示例,展示如何使用微信小程序的前端代码向后端发送请求并处...【详细内容】
2024-01-24  Search: 前端  点击:(55)  评论:(0)  加入收藏
如何优雅的实现前端国际化?
JavaScript 中每个常见问题都有许多成熟的解决方案。当然,国际化 (i18n) 也不例外,有很多成熟的 JavaScript i18n 库可供选择,下面就来分享一些热门的前端国际化库!i18nexti18ne...【详细内容】
2024-01-17  Search: 前端  点击:(69)  评论:(0)  加入收藏
JavaScript前端框架2024年展望
Angular、Next.js、React和Solid的维护者和创作者们展望2024年,分享了他们计划中的改进。译自2024 Predictions by JavaScript Frontend Framework Maintainers,作者 Loraine...【详细内容】
2024-01-05  Search: 前端  点击:(91)  评论:(0)  加入收藏
▌简易百科推荐
20k级别前端是怎么使用LocalStorage的,想知道吗?
当咱们把咱们想缓存的东西,存在localStorage、sessionStorage中,在开发过程中,确实有利于咱们的开发,咱们想看的时候也是一目了然,点击Application就可以看到。前言大家好,我是林...【详细内容】
2024-03-26  前端之神  微信公众号  Tags:前端   点击:(12)  评论:(0)  加入收藏
前端不存在了?盲测64%的人更喜欢GPT-4V的设计,杨笛一等团队新作
3 月 9 日央视的一档节目上,百度创始人、董事长兼 CEO 李彦宏指出,以后不会存在「程序员」这种职业了,因为只要会说话,人人都会具备程序员的能力。「未来的编程语言只会剩下两种...【详细内容】
2024-03-11  机器之心Pro    Tags:前端   点击:(9)  评论:(0)  加入收藏
前端开始“锈化”?Vue团队开源JS打包工具:基于Rust、速度极快、尤雨溪主导
Vue 团队已正式开源Rolldown &mdash;&mdash; 基于 Rust 的 JavaScrip 打包工具。Rolldown 是使用 Rust 开发的 Rollup 替代品,它提供与 Rollup 兼容的应用程序接口和插件接口...【详细内容】
2024-03-09  OSC开源社区    Tags:Vue   点击:(11)  评论:(0)  加入收藏
两年前端经验还不会手写Promise?
什么是promise?当我们处理异步操作时,我们经常需要进行一系列的操作,如请求数据、处理数据、渲染UI等。在过去,这些操作通常通过回调函数来处理,但是回调函数嵌套过多会导致代码...【详细内容】
2024-03-07  海燕技术栈  微信公众号  Tags:Promise   点击:(23)  评论:(0)  加入收藏
网站开发中的前端和后端开发有什么区别
前端开发和后端开发都是干什么的?有哪些区别?通俗地讲,前端干的工作是用户可以直接看得见的,而后端开发的工作主要在服务端,用户不太能直接看到。虽然前端开发和后端开发的工作有...【详细内容】
2024-02-21  CarryData    Tags:前端   点击:(32)  评论:(0)  加入收藏
网站程序开发中的前后端分离技术
随着互联网的快速发展和技术的不断创新,传统的网站开发模式已经难以满足日益增长的业务需求。为了提高开发效率、增强系统的可维护性和可扩展性,前后端分离技术逐渐成为了网站...【详细内容】
2024-01-31  网站建设派迪星航    Tags:前后端分离   点击:(23)  评论:(0)  加入收藏
如何优雅的实现前端国际化?
JavaScript 中每个常见问题都有许多成熟的解决方案。当然,国际化 (i18n) 也不例外,有很多成熟的 JavaScript i18n 库可供选择,下面就来分享一些热门的前端国际化库!i18nexti18ne...【详细内容】
2024-01-17  前端充电宝  微信公众号  Tags:前端   点击:(69)  评论:(0)  加入收藏
Vue中Scope是怎么做样式隔离的?
scope样式隔离在 Vue 中,样式隔离是通过 scoped 特性实现的。当在一个组件的 <style> 标签上添加 scoped 特性时,Vue 会自动为这个样式块中的所有选择器添加一个唯一的属性,以...【详细内容】
2024-01-04  海燕技术栈  微信公众号  Tags:Vue   点击:(80)  评论:(0)  加入收藏
vue3中 ref和 reactive的区别 ?
最近有朋友在面试过程中经常被问到这么一个问题,vue3 中的ref 和 reactive的区别在哪里,为什么 要定义两个API 一个 api不能实现 响应式更新吗??带着这个疑问 ,我们 接下来进行逐...【详细内容】
2024-01-03  互联网高级架构师  今日头条  Tags:vue3   点击:(38)  评论:(0)  加入收藏
React18 与 Vue3 全方面对比
1. 编程风格 & 视图风格1.1 编程风格 React 语法少、难度大;Vue 语法多,难度小例如指令:Vue<input v-model="username"/><ul> <li v-for="(item,index) in list" :key="inde...【详细内容】
2024-01-03  爱做梦的程序员  今日头条  Tags:Vue3   点击:(72)  评论:(0)  加入收藏
站内最新
站内热门
站内头条