vue 代码快捷键_Vue项目中优雅的给应用绑定快捷键

本文介绍了在Vue应用中为功能绑定快捷键的方法,通过使用keymaster库来实现编程式快捷键绑定,避免了模板内绑定的限制。同时,展示了如何封装一个通用快捷键插件,扩展keymaster的bind方法,并将其添加到Vue的原型上,方便在JavaScript中自由调用。此外,还给出了一个使用案例,即通过快捷键⌘/Ctrl+S实现应用的保存功能。
摘要由CSDN通过智能技术生成

想必各位前端看官也一定做过这样的需求,给我们的应用某些主要的功能绑定一个快捷键。尤其是工具类的产品,让用户可以使用快捷键操作,能大大提高工具使用效率。

如何绑定快捷键

聪明的你也想到了,Vue 官方文档自有解释:按键修饰符

但是实际实践过的你也可能知道,这种绑定按键事件的方式都是绑定在了当前 ViewModel 上的。也就是模版字符串 template 中,这样就无法自定义一个时机在 JavaScript 中自由调用。不过这样做也有好处,比如当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何清理它们。

这里使用第三方插件 keymaster 来做按键绑定,编程式绑定任意按键。

使用插件

安装

npm i keymaster -S
or
yarn add keymaster -S

使用

import key from 'keymaster'

// 给按键 A 绑定快捷键
key('a', function(){ alert('you pressed a!') });

// 回调函数返回 false 以阻止浏览器默认事件行为
key('ctrl+r', function(){ alert('stopped reload!'); return false });

// 绑定多个快捷键,做同一件事
key('⌘+r, ctrl+r', function(){ });

定制插件

如果一个函数被使用超过3次以上,我习惯封装一个通用函数,不如直接写成 Vue 中的 plugin 好了。

// @/plugins/shortcut.js

import Vue from 'vue'
import keymaster from 'keymaster'

const bindKeyHandler = fn => {
  return () => {
    fn()
    return false
  }
}

export const shortcut = {
  bind: (seed, func) => keymaster(seed, bindKeyHandler(func)),
  ...keymaster
}

Vue.prototype.$shortcut = shortcut

插件为 Vue.prototype 添加了全局方法 $shortcut,shortcut 扩展了 keymaster “遗散多年”的 bind 方法(绑定按键事件),我猜 keymaster 没有提供 bind API,可能是因为 bind() 是 JavaScript 内置的方法。为了避免命名冲突或者语法歧义。

绑定事件

? 举个例子:给应用添加保存功能,那快捷键一定是 ⌘ / Ctrl + S

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值