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项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
Vue实现圆环进度条的示例
Feb 06 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
vue.js Router中嵌套路由的实用示例
Jun 27 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
vue3使用vuedraggable实现拖拽功能
Apr 06 Vue.js
vue2的 router在使用过程中遇到的一些问题
Apr 13 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数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
动态控制Table的js代码
2007/03/07 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
XENON基于JSON变种
2010/07/27 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
TypeScript入门-接口
2017/03/30 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
蔬菜基地的创业计划书
2014/01/06 职场文书
大学军训通讯稿
2014/01/13 职场文书
英文请假条
2014/04/11 职场文书
2015年班组长工作总结
2015/04/10 职场文书
运动会表扬稿范文
2015/05/05 职场文书
2019各种承诺书范文
2019/06/24 职场文书
Pygame Event事件模块的详细示例
2021/11/17 Python