当前位置:首页 > VUE

vue 闹钟提醒 实现

2026-02-18 12:13:31VUE

实现 Vue 闹钟提醒功能

核心思路
通过 Vue 组件结合浏览器通知 API 实现闹钟功能,需监听时间变化并在设定时间触发提醒。

基础组件结构

使用 Vue 3 的 Composition API 编写核心逻辑:

<template>
  <div>
    <input type="time" v-model="alarmTime" />
    <button @click="setAlarm">设置闹钟</button>
    <button @click="clearAlarm">清除闹钟</button>
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue';

const alarmTime = ref('');
let alarmInterval = null;
</script>

时间检测逻辑

通过定时器每分钟检查当前时间是否匹配设定时间:

const checkAlarm = () => {
  if (!alarmTime.value) return;

  const now = new Date();
  const [hours, minutes] = alarmTime.value.split(':');
  const alarmDate = new Date(
    now.getFullYear(),
    now.getMonth(),
    now.getDate(),
    hours,
    minutes
  );

  if (now >= alarmDate && now - alarmDate < 60000) {
    triggerNotification();
    clearAlarm();
  }
};

const setAlarm = () => {
  if (alarmInterval) clearInterval(alarmInterval);
  alarmInterval = setInterval(checkAlarm, 60000);
  checkAlarm(); // 立即检查一次
};

浏览器通知实现

需先请求通知权限,然后触发提醒:

const requestPermission = () => {
  if ('Notification' in window) {
    Notification.requestPermission().then(permission => {
      if (permission !== 'granted') {
        console.warn('通知权限未授予');
      }
    });
  }
};

const triggerNotification = () => {
  if (Notification.permission === 'granted') {
    new Notification('闹钟提醒', {
      body: '设定的时间到了!',
      icon: '/alert-icon.png'
    });
  } else {
    alert('闹钟时间到了!');
  }
};

onMounted(requestPermission);

清除闹钟功能

停止定时器并重置状态:

const clearAlarm = () => {
  if (alarmInterval) {
    clearInterval(alarmInterval);
    alarmInterval = null;
  }
  alarmTime.value = '';
};

onUnmounted(clearAlarm);

增强功能建议

  1. 多闹钟支持:改用数组存储多个闹钟时间
  2. 铃声定制:通过 Web Audio API 播放自定义音频
  3. 持久化存储:使用 localStorage 保存闹钟设置
  4. 响应式样式:添加闹钟激活状态的视觉反馈

注意事项

  • 浏览器通知需要用户手动授权
  • 页面关闭后定时器会停止,如需后台提醒需改用 Service Worker
  • 移动端可能限制自动播放音频,需用户交互触发

vue 闹钟提醒 实现

标签: 闹钟vue
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

vue聊天实现

vue聊天实现

Vue 聊天应用实现步骤 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 Vue 3、Element UI 或 Vuetify 用于 UI 组件)。 npm c…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascade…

vue实现定位

vue实现定位

Vue 中实现定位的方法 在 Vue 中实现定位可以通过以下几种方式: 使用 CSS 定位 通过 CSS 的 position 属性实现定位,Vue 中可以直接在组件的 <style>…

vue 实现表单

vue 实现表单

Vue 表单实现方法 Vue.js 提供了多种方式实现表单,包括双向数据绑定、表单验证和动态表单生成。以下是常见的实现方法: 基础表单绑定 使用 v-model 指令实现表单元素与数据的双向绑定:…

vue翻页实现

vue翻页实现

Vue翻页实现方法 基础分页组件实现 使用v-for和计算属性实现基础分页逻辑: <template> <div> <ul> <li…