vue快速复制快捷键_⌨️ Vue项目给应用优雅的绑定快捷键

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

如何绑定快捷键

聪明的你也想到了,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 啦

export default {

...

mounted () {

// 绑定按键绑全套,mac 和 windows

this.$shortcut.bind('⌘+s, ctrl+s', this.handleSave)

},

methods: {

handleSave () {

// 保存逻辑

}

}

...

}

销毁事件

Vue 组件中绑定事件监听器的最佳实践告诉我们,绑定后的事件是需要在组件销毁时候解绑的。

export default {

...

beforeDestroy () {

this.$shortcut.unbind('⌘+s, ctrl+s')

}

...

}

做好防抖

拿上面绑定事件例子讲,可能包括你在内的开发者,会习惯无限 Ctrl + S 保存代码,一顿三连击以获得安全感😂,假设我为应用绑定了快捷键,但是没做防抖的话。那么会触发多次 handleSave 回调。其实这是没必要的。为了避免这种情况发生,我们让正常的回调函数变成防抖的回调函数。

直接上例子,这里借助 lodash 中的 debounce 函数来实现:

import { debounce } from 'lodash'

export default {

...

mounted () {

// 绑定按键绑全套,mac 和 windows

this.$shortcut.bind('⌘+s, ctrl+s', this.handleSave)

},

methods: {

handleSave: debounce(function () {

// 保存逻辑

}, 200)

}

...

}

快捷键列表

应用功能一旦多起来,那么你提供的快捷键一定也变得多起来,为了提升用户体验以及产品的专业性。我们可以给快捷键制作一个列表。统一展示快捷键。像这样:

系统间差异

要注意截图中展示的是 macOS 下的快捷键 ⌘,如果是 Windows 系统,那么需要替换相应的 Ctrl

我们可以使用 navigator.userAgent 来判断当前用户的操作系统是什么。来抉择在页面到底显示的快捷键字符。

你可以点击 https://simpl.info/useragent/ 来立即查看 navigator.userAgent 打印的内容// 在不考虑 linux 系统的情况下,我们可以这样简单的判断当前的操作系统是 mac 还是 windows

const ns = navigator.userAgent

const isMacOS = /\\b(Mac OS|Macintosh)\\b/.test(ns)

语义化HTML

形如⌘ + S 这样的快捷键,我们可以使用 HTML 标签 来标识键盘映射。

+ S

同类型类库hotkeys - 是 keymaster 的临摹版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里智能运维平台如何助力研发应对双11挑战

摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《阿里智能运维平台如何助力研发应对双11挑战》演讲整理,在回顾了阿里巴巴运维…

WebStorm-2019.2.3 下载安装

文章目录一、下载:WebStorm-2019.2.3二、安装三、激活3.1 编辑hosts文件,填写一些内容3.2 运行WebStorm,填写激活码3.3 激活日期为2020年一、下载:WebStorm-2019.2.3 官网下载 https://www.jetbrains.com/webstorm/ 点击“DOWNLO…

计算机机房建设目标是什么,计算机机房建设方案计划.doc

计算机机房建设方案计划PAGEPAGE 32********计算机机房建设项目PAGE 1计算机机房建设项目设计方案目 录TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc150746282" 第1章 项目背景 PAGEREF _Toc150746282 \h 3HYPERLINK \l "_Toc150746283" 1.1 项目介…

新一代数据库技术在双11中的黑科技

摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《新一代数据库技术在双11中的应用》演讲整理,本文主要从数据库上云和弹性调度…

双11万亿流量下的分布式缓存

摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《双11万亿流量下的分布式缓存》演讲整理,本文主要从Tair发展和应用开始谈起&a…

任正非:华为鸿蒙将比安卓快 60%;小米已官方回应侵权偷图事件;博通正考虑收购软件公司,其中Tibco和赛门铁克为重点目标……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 故宫宫廷和名创优品联名推出…

曲曲直直线条图计算机教案,【曲曲直直的美术画】_美术教案第三课:曲曲直直(三年级美术下册教案)——小学美术...

美术教案第三课:曲曲直直(三年级美术下册教案)教学目标:认知目标:能够认识生活中的各种曲线和直线,说说曲线、直线给自己的感受.能力目标:能够用绘画、剪贴等方法表现曲线和直线的画面,培养学生自主探究的能力和创造能力.情感目标:通过收集不同直线、曲线材料进行创作,培养学生…

2017双11交易系统TMF2.0技术揭秘,实现全链路管理

摘要: 本文是《2017双11交易系统TMF2.0技术揭秘》演讲整理,主要讲解了基于TMF2.0框架改造的交易平台,通过业务管理域与运行域分离、业务与业务的隔离架构,大幅度提高了业务在可扩展性、研发效率以及可维护性问题,同时以…

争分夺秒:阿里实时大数据技术全力助战双11

摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《争分夺秒:阿里实时大数据技术助战双 11》演讲整理,主要讲解了阿里…

台式电脑一般价钱多少_看完才明白,电脑一体机和台式机哪个好?

一体机和台式机电脑哪个好?电脑一体机是目前台式机和笔记本电脑之间的一个新型的市场产物,它将主机部分、显示器部分整合到一起的新形态电脑,该产品的创新在于内部元件的高度集成。台式机分为主机和机箱,是分体存在的,…

计算机房地板厚度,机房防静电地板 架空地板的技术参数与地板规格种类

导语:防静电地板又叫做导静电地板或者抗静电地板(分导电性型和静电耗散型),是一种机房常用的地板装饰材料,在一二线城市的机房装修中普遍使用,但在欠发达城市很多人对这种地板了解不多,所以下面就来为大家简单介绍下防…

Hive精华问答 | Hive的数据模型是怎样的?

Hive是一个数据仓库基础工具,它是建立在Hadoop之上的数据仓库,在某种程度上可以把它看做用户编程接口(API),本身也并不存储和处理数据,依赖于HDFS存储数据,依赖MR处理数据。它提供了一系列对数据…

网络虚拟化技术为双11提供灵动网络

摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《网络虚拟化技术为双11提供灵动网络》演讲整理,主要讲解了混合云技术的应用与…

Git开发操作流程

开发原则: 分支开发,主干发布 文章目录一、开发简述:二、开发场景场景1_多分支开发,主分支发布场景2_按照环境划分分支三、开发流程:一、开发简述: 一个工程会划分成多个模块,一个模块会划分成…

睡眠周期时长测试软件,“智能时钟”测睡眠周期 最佳时候叫醒你

“智能时钟”能测睡眠周期在你最想起床的时候叫醒你每天早上你都喜欢赖床吗?总是讨厌美梦被打断吗?如果这样的话,一种新型智能闹钟将非常适合你。它可以测量你的睡眠周期,在你睡眠最轻和最想起床的时候叫醒你,让你倍感…

阿里1682亿背后的协同研发云——云效公共云正式商业化

摘要: 2017年12月20日云栖大会北京峰会,阿里云宣布其一站式企业协同研发云产品——云效公共云版本正式进入商业化服务阶段,同时云效还发布了三大新功能模块:跨团队联合作战的项目集、多维度测试服务、便捷高效的移动端工作台。 20…

符号库匹配不对的原因_中频点焊机焊接螺母有流渣是什么原因造成的?-苏州安嘉...

中频点焊机焊接螺母有流渣是什么原因造成的?主要的原因是输入热量过大,焊接区域金属熔化溢流出产生的;中频点焊机焊接螺母有流渣是螺母焊接过程中常见的问题,也是使用过程最需要避免出现的问题,因为这影响到螺栓无法通…

5分钟,带你了解不同类型的云计算!

戳蓝字“CSDN云计算”关注我们哦!译者 | 风车云马要掌握云计算的核心内容,需要很好地理解三种云:私有云、公共云和混合云。本文让您快速了解它们的存在原因、实际含义、它们之间的区别以及为什么不同的组织选择使用不同的云模型。为什么有三种…