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项目实现主题切换的多种方法
Nov 26 Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
vue watch监控对象的简单方法示例
Jan 07 Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
vue3使用vuedraggable实现拖拽功能
Apr 06 Vue.js
vue封装数字翻牌器
Apr 20 Vue.js
vue修饰符.capture和.self的区别
Apr 22 Vue.js
vue里使用create, mounted调用方法
Apr 26 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
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
PHP简单遍历对象示例
2016/09/28 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
Python计算一个文件里字数的方法
2015/06/15 Python
python批量制作雷达图的实现方法
2016/07/26 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
python常用排序算法的实现代码
2019/11/08 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
千与千寻观后感
2015/06/04 职场文书
汽车销售员工作总结
2015/08/12 职场文书