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 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
解决vue页面刷新,数据丢失的问题
Nov 24 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
Vue实现简易购物车页面
Dec 30 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
Vue.Draggable实现交换位置
Apr 07 Vue.js
Axios代理配置及封装响应拦截处理方式
Apr 07 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
PHP中防止SQL注入方法详解
2014/12/25 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
Django中的Signal代码详解
2018/02/05 Python
Python中property函数用法实例分析
2018/06/04 Python
大班幼儿评语大全
2014/04/30 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
《学会看病》教学反思
2016/02/17 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android