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 相关文章推荐
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
vue实现购物车的小练习
Dec 21 Vue.js
vue组件是如何解析及渲染的?
Jan 13 Vue.js
详解实现vue的数据响应式原理
Jan 20 Vue.js
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 20 Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 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
smarty获得当前url的方法分享
2014/02/14 PHP
php实现Session存储到Redis
2015/11/11 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
Python的Tornado框架异步编程入门实例
2015/04/24 Python
python实现图片彩色转化为素描
2019/01/15 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
python palywright库基本使用
2021/01/21 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
盛大二次面试题
2016/11/18 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
优秀员工演讲稿
2014/05/19 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
小学运动会前导词
2015/07/20 职场文书
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL