当前位置:首页 > 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);

清除闹钟功能

停止定时器并重置状态:

vue 闹钟提醒 实现

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

onUnmounted(clearAlarm);

增强功能建议

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

注意事项

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

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

相关文章

vue实现定位

vue实现定位

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

vue实现vnc

vue实现vnc

Vue 实现 VNC 客户端 在 Vue 项目中实现 VNC 客户端功能,可以通过集成现有的 VNC 客户端库或组件完成。以下是具体实现方法: 安装依赖库 使用 noVNC 或其他 VNC 客户端…

vue实现标题

vue实现标题

Vue 实现标题的方法 在Vue中实现标题可以通过多种方式,以下是几种常见的方法: 方法一:使用模板语法 在Vue组件的模板中直接使用HTML的<h1>到<h6>标签来定义…

vue实现浮标

vue实现浮标

Vue 实现浮动按钮(浮标) 使用 Vue 实现浮动按钮可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 定位和 Vue 组件 创建 Vue 组件并配合 CSS 固定定位实现浮动按钮:…

vue 实现滑动

vue 实现滑动

Vue 实现滑动效果的方法 在Vue中实现滑动效果可以通过多种方式,以下是几种常见的方法: 使用CSS过渡和动画 通过Vue的<transition>组件结合CSS过渡或动画实现滑动效果…

vue实现curd

vue实现curd

Vue实现CRUD操作 初始化Vue项目 使用Vue CLI创建新项目,安装必要依赖如axios用于HTTP请求 vue create crud-demo cd crud-demo npm inst…