企业研发效能度量利器,华为云发布CodeArts Board看板服务

摘要:华为云CodeArts Board正式上线,欢迎体验。

本文分享自华为云社区《企业研发效能度量利器,华为云发布CodeArts Board看板服务》,作者:华为云头条。

数字化时代,提升研发效能以加快价值交付已经成为企业的核心目标和竞争力。而组织效能的提升离不开高效精准的度量,同时科学的研发效能度量能够实现对研发过程的价值流动优化,从而加速全局的价值流动,实现企业多快好省的业务价值目标。

研发效能度量的目标是通过构建研发效能度量体系,实现软件研发过程的可视化、软件交付的可管理可跟踪可量化,以及及时识别研发过程的堵塞点和改进点,通过数据驱动运营和治理,不断提升企业的软件能力和研发效能。但研发效能度量建设过程中也会面临一些挑战:

  • 数据采集自动化难

研发端到端的工具链多,并且同类型工具的对象模型不一致,手工收集数据的成本高;

  • 海量数据复杂度高

研发效能度量会涉及研发过程端到端的工具链数据,需要解决海量数据的存储、计算、建模、以及高性能的查询;

  • 度量指标无体系

研发效能度量体系涉及整个研发的生命周期,企业通常缺乏整体的效能度量指标体系、度量应用场景、以及如何结合度量指标体系识别企业研发过程问题和改进点;

  • 定制场景灵活多变

每个企业都有自身的研发管理模式和管理诉求,通用的度量指标无法满足企业的所有需求,需要场景定制化。

一站式数据驱动的研发效能度量平台

为了解决上述问题,华为云结合自身在研发效能度量领域沉淀的优秀方法论和最佳实践,于5月18日全新推出华为云CodeArts Board看板服务,其作为一站式数据驱动的研发效能度量平台,具备优势如下:

  • 数据集成零感知

全面接入CodeArts工具链数据,自动汇集研发全流程数据,连接数据孤岛,贯通软件研发的全生命周期;

  • 丰富的效能指标体系

基于华为云实践的指标管理体系和价值流指标体系,提供覆盖需求、代码、测试、构建、流水线、发布等领域的度量指标;

  • 开箱即用的洞察分析平台

企业可以基于自身的定制度量指标诉求,通过无门槛的拖拽配置,即可完成指标的二次定制开发;

  • 灵活扩展的自定义度量报表

通过自定义报表灵活组合扩展的能力,企业可以构建自身的度量治理门户。

▲一站式数据驱动的研发效能度量平台

华为云CodeArts Board五大特性

特性一:企业级研发效能驾驶舱,支撑企业数据驱动治理

驾驶舱为企业提供了一站式的数据决策管理服务,企业的不同角色可以在驾驶舱完成管理作战。华为云CodeArts Board提供了管理者、项目经理、团队Leader及开发者的驾驶舱,面向不同角色使用场景提供研发效能度量评估体系,从而有效支撑企业数据驱动运营及治理。

华为云CodeArts Board驾驶舱构建了企业研发效能治理的分层机制,基于企业、团队、项目及个人构建了企业研发效能度量的分层治理机制,实现自上而下的治理和自下而上的改进。

管理者驾驶舱帮助管理者整体掌握企业的研发效能情况,辅助管理决策驱动业务增长;项目经理驾驶舱帮助项目经理对项目交付全链路进行跟踪,跟进项目进度以及识别交付风险;团队Leader驾驶舱帮助团队Leader管理团队成员,跟踪管理团队的资源、交付,提升团队效能;开发者驾驶舱量化开发者产出贡献,提升工作成就感及工作效率。

▲研发效能驾驶舱

特性二:研发过程端到端度量和分析,实现研发的可视化可管理可评估

华为云CodeArts Board自动集成CodeArts工具链数据,覆盖工作项、需求、缺陷、代码、构建、代码检查、测试、流水线、部署及发布领域,连接数据孤岛,数据集成和处理自动化,自动生成研发效能度量评估指标,实现对研发全生命周期的可视化可管理可评估。

为了能够全方位地进行管理评估,华为云CodeArts Board从交付效率、交付质量、交付能力、交付成本的维度,内置了企业的研发效能综合评估报告、跨项目的需求效率度量、代码提交度量、缺陷修复度量、代码检查度量、开发缺陷度量、测试用例度量、发布部署度量、编译构建度量、工作负荷度量、团队的研发效能评估、以及开发者的自我评估。

此外,华为云CodeArts Board还内置业界DORA指标,自动呈现DORA黄金指标趋势以及与业界基线的对比,企业研发效能水平一目了然。

▲全生命周期度量评估

特性三:开箱即用的洞察分析平台,满足企业的定制化

华为云CodeArts Board提供了100+的指标库,开箱即用,涵盖工作项、测试用例、代码检查、部署、代码合入、构建及工时主题领域,涉及组织、团队、项目、个人视角,能够满足企业常用的研发效能度量场景。

同时,企业在研发效能度量和治理的过程中,往往基于企业的研发管理模式和场景诉求,需要对度量指标进行二次的开发定制,以满足自身的评估场景。为此,华为云CodeArts Board提供了洞察分析平台能力,用户可以通过自由拖拽的方式,灵活设置指标的图表类型、指标的度量维度和统计口径、指标的数据筛选、及图形的可视化配置,快速完成指标的二次定制。

基于指标库,华为云CodeArts Board可以统一管理企业的指标数据资产,从而保证企业指标的口径一致以及指标的生命周期管理。

▲开箱即用洞察分析平台

特性四:自定义报表,构建企业定制化度量门户

企业的研发效能度量评估体系往往需要基于自身企业的场景,构建一套完整的度量门户。为此,华为云CodeArts Board提供了自定义报表的能力,企业可以基于已有的度量模板及指标库,快速组合定制出企业的度量治理门户。

自定义报表支持目录信息结构的组织、指标的选取、指标的自由拖动、图表的自由布局组合、指标的明细下钻、全局的筛选维度以及筛选条件,灵活可扩展,满足企业多样化的管理度量定制场景。

▲自定义报表

特性五:企业权限和团队配置,构建企业管理角色

华为云CodeArts Board支持管理员、企业高管、团队Leader、领域行管、普通成员的角色管理设置,基于企业研发效能的分层治理机制,支撑企业建立面向组织的权限管理体系。同时,基于角色的管理,能够保证企业上下步调一致,从而保证数据驱动治理的有效执行。

此外,华为云CodeArts Board还提供了团队管理配置功能,企业可以基于实际成员的管理和运作,灵活设置团队成员,从而应对企业在研发效能度量评估中复杂的组织场景。

▲管理角色和团队配置

基于以上五大特性,华为云CodeArts Board可以帮助企业构建研发效能度量体系,实现数据驱动研发效能提升。未来,华为云CodeArts Board将继续外溢更多华为云在研发效能提升上的优秀特性和实践,如研发数据的智能洞察、智能预警、智能体检报告等,助力企业研发数字化转型。

 

点击关注,第一时间了解华为云新鲜技术~

本文转载于网络 如有侵权请联系删除

相关文章

  • WEB日志格式

    大家好,又见面了,我是你们的朋友全栈君。WEB日志格式日志格式类型:常见日志格式:参考:WEB日志格式CustomLogFormats:普通日志格式日志格式类型:目前常见的WEB日志格式主要由两类Apache的NCSA日志格式,NCSA格式分为 NCSA普通日志格式(CLF)NCSA扩展日志格式(ECLF)IIS的W3C日志格式目前最常用的是NCSA扩展日志格式(ECLF)及基于自定义类型的Apache日志格式,而W3C扩展日志格式(ExLF)具备了更为丰富的输出信息,但目前的应用并不广泛,所以这里主要介绍的是NCSA扩展日志格式(ECLF)。常见日志格式:CommonLogFormat(CLF) "%h%l%u%t\"%r\"%>s%b"CommonLogFormatwithVirtualHost "%v%h%l%u%t\"%r\"%>s%b"NCSAextended/combinedlogformat "%h%l%u%t\"%r\"%>s%b\"

  • 5.11VR行业大事件:Meta首家线下零售店正式开业;阿里巴巴申请多个元宇宙商标被驳回

    (VRPinea5月11日讯)今日重点新闻:Meta首家线下零售店于当地时间5月9日正式开业;阿里巴巴于去年9月申请的多个元宇宙商标现被驳回;日本虚拟主播vox直播首秀一小时营收就突破百万。Meta首家线下零售店正式开业当地时间5月9日,Meta公司的首家线下零售店MetaStore在加州伯灵格姆正式开业。店铺的选址并不在繁华的步行商业街上,而是在Meta的VR团队RealityLabs的新办公楼下。该店占地1500平方英尺,采用金色的木质色调和简约的装修风格,货架上陈列着三种品类的商品:视频通话设备Portal、VR头显Quest2和智能眼镜Ray-BanStories。商店负责人MartinGilliard在接受采访时表示,Meta开设实体零售店的目的是让消费者有机会接触产品,因为必须亲身体验才能真正感受到这些产品的特色。据悉,不少参观者也在网上分享了打卡Meta商店的视频和图片。VRPinea独家点评:开店的主要目的是获得新客源吧,提供维修和售后服务嘛?苹果为XR设备招募高级显示系统工程师苹果于5月9日发布了一份招聘启事,旨在为将要推出的VR/AR/MR设备招募高级显示系统工程师

  • Redis进阶-Redis 4种MQ 方案对比

    Pre最终方案----->Redis进阶-Stream多播的可持久化的消息队列我们知道redis5.x版本,作者提供了stream这种基于radixtree基数树的数据结构,解决使用Redis实现MQ“百花齐放”的乱象。这里我们来聊一聊使用Redis实现MQ的主要集中实现以及利弊方案1Pub/SubRedis-13Redis发布订阅优点Pub/Sub的消息是FanOut多播模式,每个订阅了Channel的消费者都能从Channel中获取到同等的信息。缺点消息没有持久化的机制。当消费者的连接断掉后,再次重连,那么Channel中的消息对于该消费者而言将无法消费。 消费消息的速度和消费者的数量成反比.当消费者的数量达到一定规模时,服务器的性能将线性下降,因此每个消费者获取到消息的延迟也线性增长 当生产者产生消息的速度远大于消费者的消费能力的时候,消费者会被强制断开连接,因此会造成消息的丢失 client-output-buffer-limitpubsub32mb8mb60 当消费者的buffer积压超过32MB,或者在60s内消费者的buffer一直保持在8MB以上,那么该消费者就会

  • SAP Spartacus ConsentTemplate 数据结构的暴露逻辑

    我基于SAPSpartacus2.1创建的samplestore,里面导入了ConsentTemplate这个数据结构。import{ActiveCartService,CartAddEntrySuccessEvent,CmsConfig,Config,ConfigModule,ConsentTemplate,EventService}from‘@spartacus/core’;VisualStudioCode里单击这个数据结构,进入如下文件:node_modules@spartacus\core\src\model\consent.model.d.ts虽然都是在core/src/model文件夹下,但是文件名不同。在SAPSpartacus项目里,没有model.d.ts文件,只有consent.model.ts文件:model文件夹下的index.ts:导出consent.model.ts里的所有内容:然后coremodule的public_api.ts里,导出了src/model/index.ts里的所有内容:

  • 关于背包问题的一点发散

    昨天详解了一下背包问题,之后有人问我如果每种元素都可以选择任意数目那会怎么样?这是很常见的背包问题的变种问题,只需要我们在原来的算法基础上做一点小小的改动,我们一起来看下。照例来看下题目定义:给定N种水果的重量跟收益,我们需要把它们放进一个可容重量为C的背包里,使得包里的水果在总重量不超过C的同时拥有最高的收益,假设水果数量无限,一种可选多个。这次我们还要去卖水果,在携带量有限的情况下获得最大的收益。假设档情况是:水果:{苹果,橙子,西瓜}重量:{1,2,3}收益:{15,20,50}可容重量:5。我们也同样先来稍稍列举下可能的情况:5苹果(总重5)=>75收益1苹果+2橙子(总重5)=>55收益2苹果+1西瓜(总重5)=>80收益1橙子+1西瓜(总重5)=>70收益。我们可以看到两个苹果跟西瓜是绝配,载重量有限的情况下我们获得了最大收益。关键是我们得把这个过程通过代码表达出来,我们来分析一下,对于每种水果,我们可以选择放进去然后进行下一轮选择,或者不放进去直接进行下一轮选择,在每次放进去一种水果A之后,我们还要选择要不要把A再放进去,知道超出背包的载重量,然后

  • 颜色空间系列4: RGB和YDbDr颜色空间的转换及优化算法

    颜色空间系列代码下载链接:http://files.cnblogs.com/Imageshop/ImageInfo.rar(同文章同步更新)YDbDr颜色空间和YCbCr颜色空间类似,其和RGB空间之间的相互转换公式里取http://en.wikipedia.org/wiki/YDbDr所描述的。RGB转为YDbDr为:(1)对应的YDbDr转换为RGB的公式为:(2)由式(1)可知Y的范围是[0,255],Db的范围是[-1.333*255,1.333*255],Dr的范围亦为[-1.333*255,1.333*255]。为了使Db,Dr的变换量程也为255-0大小,需要将上述Db/Dr压缩1.333*2倍,即将各系数处理(1.333*2),得到新的转换:    [Y]   [0.2990  -0.1688  -0.5000][R]   [Db] = [0.5870-0.3312  0.4186][G]          [Dr]   [0.11400.5000  0.0814][B]对应的逆变换可用matlab求上述矩阵的逆阵即可:   [R]   [1.0000000000000

  • Linux中的普通命令如何以管理员身份运行

    setuid,gid,stickybit权限一个文件都有一个所有者,表示该文件是谁创建的。同时,该文件还有一个组编号,表示该文件所属的组,一般为文件所有者所属的组。如果是一个可执行文件,那么在执行时,一般该文件只拥有调用该文件的用户具有的权限,而setuid,setgid可以来改变这种设置。想到一个通俗的解释说法,类似于Windows里的以管理员身份运行。 setuid设置使文件在执行阶段具有文件所有者的权限。典型的文件是/usr/bin/passwd如果一般用户执行该文件,则在执行过程中,该文件可以获得root权限,从而可以更改用户的密码。setgid该权限只对目录有效.目录被设置该位后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。stickybit该位可以理解为防删除位。一个文件是否可以被某用户删除,主要取决于该文件所属的组是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件.如果希望用户能够添加文件,但同时不能删除文件,则可以对文件使用stickybit位.设置该位后,就算用户对目录具有写权限,也不能删除该文件。具体的

  • Advanced CNN Architectures(R-CNN系列)

    分类与定位(ClassificationandLocalization)一个简单的定位示例:除了将该图像标记为猫外,还需要定位图中的猫,典型方法是在该猫周围画一个边界框,这个方框可以看做定义该方框的一系列坐标,(x,y)可以是方框的中心w和h分别表示方框的宽和高。 要计算这些值我们可以使用典型分类CNN,用到的很多相同结构。一种定位方式是首先将给定图像传入一系列卷积层和池化层并为该图像创建一个特征向量,保留相同的全连接层进行分类,然后在特征向量之后添加另一个全连接层,目的是预测边界框的位置和大小,称其为边界框坐标。 在这个CNN中:有一个输出路径作用是为图像中的对象生成类别另一个输出路径的作用是生成该对象的边界框坐标 在这个示例中,假设输入图像不仅具有相关的真实标签而且具有真实的边界框。这样我们可以通过对比类别和边界框的预测值和真实值训练网络。 我们已经知道如何使用交叉熵损失等衡量分类模型的性能,但交叉熵适合概率值在0和1之间的模型。但是对于边界框我们需要其他损失函数,这种函数能够衡量预测边界框和真实边界框之间的误差。BoundingBoxesandRegression(边界框与回归)

  • Unix&Linux下常见的性能分析工具介绍

    VmstatTopFreeUptimesysstat工具包IozoneStrace工具介绍-VmstatVmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。系统性能分析工具中,使用最多的是这个,除了sysstat工具包外,这个工具能查看的系统资源最多。主要说明这个命令显示出的部分数据代表的含义,和它反映出系统相关资源的状况。输出内容共有6类,分别说明如下。b.Procs–r:运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)–b:处于不可中断状态的进程数,常见的情况是由IO引起的c.Memory–swpd:切换到交换内存上的内存(默认以KB为单位)•如果swpd的值不为0,或者还比较大,比如超过100M了,但是si,so的值长期为0,这种情况我们可以不用担心,不会影响系统性能。–free:空闲的物理内存–buff:作为buffercache的内存,对块设备的读写进行缓冲–cache:作为pagecache的内存,文件系统的cache •如果cache的值大的时候,说

  • 如何使用高大上的方法调参数

    本文主要介绍作者与EladHazan,AdamKlivans合作的最新论文: HyperparameterOptimization:ASpectralApproach(https://arxiv.org/abs/1706.00764)那么,在介绍具体算法之前,我们先要理解一个很重要的问题:调参数这个东西,关我x事?因为它非常有用。调参数是指这么个问题:你有n个参数,每个参数需要赋一个值。赋完值之后,你用这些参数做一个实验,可以看到一个结果。根据这个结果,你可以修改你的参数,然后接着做实验,看结果,改参数……最后你希望得到一个非常好的结果。这个框架适用于几乎一切场景。比如说,它可以用来指导你做饭。每次放多少盐?多少糖?火开多大?开多久放料?先放什么再放什么?各放多少?平底锅还是炒锅?油放多少?要不要放胡椒粉?等等。JasperSnoek就在一次报告中(http://t.cn/RpXNsCs)讲述如何用调参数方法(贝叶斯优化)炒鸡蛋。他只花了大概30个鸡蛋就得到了一个很好的菜谱。当然了,调参数方法还可以用来炒虾米,炒猪肉,炖茄子,烤羊腿,或者酿酒,和面,撒农药,养鸡养鸭,做生物化学实验,基

  • 文件名对目标文件夹可能过长

    win7下复制文件的时候发生了这个问题 搜索发现是因为win7支持的最长的文件名称260个字符,我这个目录搞的太深了。。。 如果你觉得内容对你有帮助,请点个赞 本作品采用知识共享署名-非商业性使用-相同方式共享2.5中国大陆许可协议进行许可。

  • NPOI复制模板另存为新的excel

    使用NPOI组件   //vartable2= doc.tables[0];///直接使用tables无法获取嵌套在里面的table,只能获取最外层的table//vartable3=table2.GetRow(2).GetCell(0).Tables[0];  //获取嵌套在表格里面的table   excel类 引用 usingNPOI.HSSF.UserModel;usingNPOI.SS.UserModel;usingNPOI.SS.Util;usingNPOI.XSSF.UserModel;usingSystem.IO; #region正式导出无bug publicHSSFWorkbookDataTableToExcelOK(DataTabledt,DataTabledt1,DataTabledt2,stringfilePath,stringtpath,boolisColumnName) { IRowrow=null; ISheetsheet=null; ICellcell=null; intstartRow=0; IWorkbookwor

  • 机器学习笔记08(Keras)

    现在还没学过python,此节视频笔记后面再加。   Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化 。         我喜欢一致,可是世界并不一致

  • 用了Redisson的Spring Boot Starter搞的我都想重写个

    在对接一个小程序推送的框架时,需要将access_token存储到Redis中,框架中提供了存储逻辑,只需要将RedissonClient对象传进去即可。框架内部在用Redisson的RBucket进行数据存储时报错了,原因是fst里面的一个方法找不到了,这一看就是版本的问题。 Redisson中依赖的fst是2.57,这个版本是没问题,主要是目前项目的依赖版本降低了,原因是dubbo中依赖了低版本,影响了原有的版本。 解决方案很简单,强制申请要使用的版本即可,今天主要不是讲这个如何解决的,是想说下另一些使用不太方便的点。 默认编码 根据官方文档的说明,默认编码是jackson,从我们上面的错误来看,是用了fst编码才报的错。而项目中没有单独设置过编码方式,所以这里文档是不是没及时更新? 在构造Config对象里面看到了默认的编码设置: 配置编码 如果你想换一种编码方式,本来想着用了redisson-spring-boot-starter,应该直接可以通过配置指定对应的编码方式。 翻翻源码一看并没有这些配置信息,看文档得知,你可以自定义一个yml文件来配置相关信息,然后指定这个ym

  • CentOS最常用命令及快捷键整理

    常用命令: 文件和目录: #cd/home            进入'/home'目录 #cd..                返回上一级目录 #cd../..              返回上两级目录 #cd-                返回上次所在目录 #cpfile1file2          将fil

  • VB.NET 仿Edge风格的TabControl控件

    原本是想写个Chrome内核的浏览器,但是.net语言下比较好用类库的并不多,尝试过CefSharp、Xilium.CefGlue,都发现很多坑,所以这个项目就烂尾了,现在将还有点用的代码发出来给大家发点光和热。 全新开发的类似TabControl功能的控件(非重写TabControl),仿Edge浏览器标签页风格,集成了丰富的事件属性,适用于作为浏览器容器使用,当然也可以作为TabControl使用。   主要特征:1、具有ReadOnly属性,开启后可以防止用户键盘鼠标操作标签条及标签页上的内容。2、标签条可以设置显示图标(favicon)及文字,也可以显示加载中的动画。3、标签条默认状态下不显示关闭按钮,可以尽可能多的显示标题文字内容。只有鼠标移动到上面时才会显示关闭按钮。   Demo下载:https://files.cnblogs.com/files/hironpan/EdgeTabControlDemo.zip 源码是VB.NET写的,C#转换一下就可以:http://converter.telerik.com 欢迎留言交流,转载请注明出处。

  • 第四章 处理请求数据

    回顾Servlet的处理方式: 请求数据:请求参数,请求cookie信息,请求头信息... javaWEB:通过HttpServletRequestrequest        request.getParameters(参数名),request.getParameterMap()        request.getCookie(),request.getHeader(); 第一种方式:在处理请求的方法中,加入相应的形参,保证参数名和传递的数据参数名保持一致,就可以自动赋值 请求处理方法签名(即怎么获取客户端传递的数据) SpringMVC通过分析处理方法的签名(方法名+参数列表),Http请求信息绑定到处理方法的相应形参中。 SpringMVC对控制器处理方法签名的限制是很宽松的,几乎可以按喜欢的任何方式对方法进行签名。 必要时可以对方法及方法入参标注相应的注解(@PathVariable,@RequestParam,@RequestHeader等) SpringMVC框架将Http请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。

  • react.js 给标识ref,获取内容

    importReact,{Component}from'react' importReactDOMfrom'react-dom' classAppextendsComponent{ //给一个初始化状态 constructor(){ super(); this.state={ result:0 } } handChange=()=>{ //获取inputa的类容,这个a就是我们给的标识ref="a" leta=this.refs.a.value||0; letb=this.refs.b.value||0; //改变状态,更新视图 this.setState({result:parseFloat(a)+parseFloat(b)}) } render(){ return( <div> <inputtype="text"ref="a"onChange={this.handChange}/> + <inputtype="text"ref="b"onChange={this.handChange}/> <p>{this.state.resu

  • VINS(九)Ceres Solver优化(未完待续)

    使用CeresSolver库处理后端优化问题,首先系统的优化函数为

  • Python Logging 日志配置文件

    1.项目结构 2.配置文件,LogConfigure.json { "version":1, "disable_existing_loggers":false, "formatters":{ "simple":{ "format":"%(asctime)s-%(name)s-%(levelname)s-%(message)s" } }, "handlers":{ "console":{ "class":"logging.StreamHandler", "level":"DEBUG", "formatter":"simple", "stream":"ext://sys.stdout" }, "info_file_handler":{ "class":"logging.handlers.RotatingFileHandler", "level":"INFO", "formatter":"simple", "filename":"FileLoges/info.log", "maxBytes":10485760, "backupCount":20, "encoding":"utf8" },

  • JavaScript键盘鼠标事件处理

    监听键盘鼠标事件 监听某个按键事件 当键盘上的某个键被按下时,会依次触发一次下面的事件: onkeydown:键盘按下这个动作(按下键盘) onkeypress:键盘被按住(一直按着键盘不动) onkeyup:键盘被弹起(松开键盘) 通过监听keydown事件既可以知道键盘被按下: document.onkeydown=function(event){ //键盘按下时触发 console.log('keydown'); }; document.onkeypress=function(event){ //键盘按住时触发 console.log('keypress'); }; document.onkeyup=function(event){ //键盘弹起时触发 console.log('keyup'); }; //控制台数据的顺序为:keydown->keypress->keyup 复制 注意到键盘按下的event参数,该参数为KeyboardEvent事件对象,其中包含按键相关的一些属性。其中: type:事件类型,如'keydown'或者'keyup'

相关推荐

推荐阅读