Vue自定义铃声提示音组件的实现


Posted in Vue.js onJanuary 22, 2022

背景/前言

之前的一个功能需求,需要在页面接收消息,一旦有了新消息之后,需要用铃声进行提醒。

因为没有找到类似的比较便捷的组件,所以就自己写了一个。然后想着能不能尝试下做成一个公共的组件,发布出去让其他开发者也用用?于是就试着写了一个项目(项目地址在最后),发布成了npm包。

目前这个组件已经发布到了npm上,欢迎大家试用。如果有好的建议,或者找到了更好的类似组件,欢迎指出和分享~

下面是使用文档:

组件的使用

安装

npm i easy-ring

加载

1)全局使用

在vue-cli项目main.js上当作插件使用,即可直接在vue单文件组件使用

// main.js
import EasyRing from 'easy-ring'
Vue.use(EasyRing)
<!-- 直接使用,无需引入 -->
<template>
    <easy-ring
        :open="open"
        :ring="ring"
        :src="src"
    />
</template>

export default {
    ...
}

2)import方式

在vue单文件组件里引入

<template>
    <easy-ring
        :open="open"
        :ring="ring"
        :src="src"
    />
</template>

import EasyRing from 'easy-ring'
export default {
    components: {
        EasyRing
    }
    ...
}

组件生效

  • 第一步. 开启铃声:将open参数设为true
  • 第二步. 响铃:将ring参数设为true
  • 第三步. 关铃:将ring参数设为false

PS:

  • 开启铃声这一步,需要放到一个按钮下埋点进行触发(原因解释见下文 "关于open参数的解释")。为了提升自己产品的使用体验,可以做到用户无感知,例如在登录时,用户点击“登录”按钮即可设置open参数为true
  • 根据自己的需求自行决定何时响铃、何时关铃,将ring参数的更改放到对应逻辑下即可

组件参数

参数名 类型 默认值 说明
open Boolean false 开启铃声
ring Boolean false 是否响铃
src String 默认铃声 铃声音频文件地址

使用默认音效

若想使用默认音效,请在./main.js文件中引入默认音效

// main.js
require('easy-ring/easy-ring-default.wav')

然后将这段代码合并到你的vue.config.js配置中:

configureWebpack: {
        module: {
            rules: [
                {
                    test: /easy-ring-default\.(wav)$/i,
                    loader: 'file-loader',
                    options: {
                        name: 'media/[name].[ext]'
                    },
                },
          ]
        }
    }

需要添加这个配置的原因是,vue-cli默认会对所有打包的静态资源加上hash版本号,这样easy-ring就无法获取到你目录下的默认音频文件的地址。

加上这一项file-loader的配置后,easy-ring的默认音频文件就不会带上hash版本号,easy-ring就能找到它。

关于open参数的解释

因为当前多数浏览器不支持自动播放音频,需要用户自己主动触发播放音频才行。这一过程需要放在诸如click的交互事件里,因此我们需要一个按钮之类的东西来触发这一行为。

但是,你可以通过一些交互来设计这一行为,从而提升用户体验,甚至让用户对此无感知。例如:在登录时,在用户点击“登录”按钮时,在代码里设置open参数为true。

项目地址

github上的地址:easy-ring

访问不了github的可以试试这个镜像地址:fastgit镜像

一共有两个项目文件:

  • easy-ring-build:构建npm发布包
  • easy-ring-demo:使用范例

到此这篇关于Vue自定义铃声提示音组件的实现的文章就介绍到这了,更多相关Vue自定义组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
Vue如何实现验证码输入交互
Dec 07 Vue.js
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
vue keep-alive的简单总结
Jan 25 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
vue实现简易音乐播放器
Aug 14 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 #Vue.js
详解Vue项目的打包方式(生成dist文件)
Jan 18 #Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 #Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 #Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 #Vue.js
详解Vue的列表渲染
Nov 20 #Vue.js
详解Vue slot插槽
Nov 20 #Vue.js
You might like
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php生成二维码
2015/08/10 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
BootStrap中
2016/12/10 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Python编写检测数据库SA用户的方法
2014/07/11 Python
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
Python之父谈Python的未来形式
2016/07/01 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
裁员通知
2015/04/25 职场文书
现实表现证明材料
2015/06/19 职场文书
python flask框架快速入门
2021/05/14 Python
对Keras自带Loss Function的深入研究
2021/05/25 Python
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
php png失真的原因及解决办法
2021/10/24 PHP