当前位置:首页 > VUE

vue实现番茄钟

2026-01-18 23:39:22VUE

使用 Vue 实现番茄钟

番茄钟是一种时间管理方法,通常将工作时间划分为25分钟的专注时段(称为“番茄时间”)和5分钟的休息时段。以下是一个基于 Vue 3 的番茄钟实现方案。

核心功能实现

安装 Vue 3 确保已安装 Vue 3 环境。若未安装,可通过以下命令初始化项目:

npm init vue@latest pomodoro-timer
cd pomodoro-timer
npm install

定义状态和数据 在 Vue 组件中定义番茄钟的核心状态:

const workDuration = 25 * 60; // 25分钟(以秒为单位)
const breakDuration = 5 * 60;  // 5分钟(以秒为单位)
const state = reactive({
  timeLeft: workDuration,
  isRunning: false,
  isWorkTime: true,
  timer: null
});

计时器逻辑 实现开始、暂停和重置功能:

function startTimer() {
  if (state.isRunning) return;
  state.isRunning = true;
  state.timer = setInterval(() => {
    state.timeLeft--;
    if (state.timeLeft <= 0) {
      clearInterval(state.timer);
      switchMode();
    }
  }, 1000);
}

function pauseTimer() {
  clearInterval(state.timer);
  state.isRunning = false;
}

function resetTimer() {
  pauseTimer();
  state.timeLeft = state.isWorkTime ? workDuration : breakDuration;
}

function switchMode() {
  state.isWorkTime = !state.isWorkTime;
  state.timeLeft = state.isWorkTime ? workDuration : breakDuration;
  startTimer();
}

界面设计

模板部分 使用 Vue 模板绑定状态和事件:

<template>
  <div class="pomodoro">
    <h2>{{ state.isWorkTime ? 'Work Time' : 'Break Time' }}</h2>
    <div class="time-display">
      {{ formatTime(state.timeLeft) }}
    </div>
    <div class="controls">
      <button @click="startTimer" :disabled="state.isRunning">Start</button>
      <button @click="pauseTimer" :disabled="!state.isRunning">Pause</button>
      <button @click="resetTimer">Reset</button>
    </div>
  </div>
</template>

时间格式化 将秒数转换为 MM:SS 格式:

function formatTime(seconds) {
  const mins = Math.floor(seconds / 60).toString().padStart(2, '0');
  const secs = (seconds % 60).toString().padStart(2, '0');
  return `${mins}:${secs}`;
}

样式优化

添加基础样式以提升用户体验:

.pomodoro {
  text-align: center;
  font-family: Arial, sans-serif;
}
.time-display {
  font-size: 3rem;
  margin: 20px 0;
}
.controls button {
  margin: 0 5px;
  padding: 8px 16px;
  font-size: 1rem;
}

扩展功能

音效提醒 在模式切换时播放提示音:

function playSound() {
  const audio = new Audio('path/to/notification.mp3');
  audio.play();
}

function switchMode() {
  playSound();
  state.isWorkTime = !state.isWorkTime;
  state.timeLeft = state.isWorkTime ? workDuration : breakDuration;
}

任务统计 记录完成的番茄钟数量:

vue实现番茄钟

const stats = reactive({
  workSessions: 0
});

function switchMode() {
  if (!state.isWorkTime) stats.workSessions++;
  // 其余逻辑不变
}

通过以上步骤,可以构建一个功能完整的 Vue 番茄钟应用。用户可根据需求进一步扩展,如添加自定义时间设置、历史记录等功能。

标签: 番茄vue
分享给朋友:

相关文章

vue实现pie

vue实现pie

Vue 实现饼图 在 Vue 中实现饼图通常可以通过第三方图表库(如 ECharts、Chart.js 或 Highcharts)来完成。以下是使用 ECharts 和 Chart.js 的两种常见方…

vue 实现筛选

vue 实现筛选

实现筛选功能的基本方法 在Vue中实现筛选功能通常涉及以下几个核心步骤: 数据绑定与筛选逻辑 使用v-model绑定筛选条件到Vue实例的数据属性,结合计算属性实现动态筛选: data() {…

javascript实现vue

javascript实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,主要包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化的实现示例。 数据响应式系统 通过 Object.de…

vue实现login

vue实现login

Vue 实现登录功能 在 Vue 中实现登录功能通常需要以下几个步骤: 创建登录表单组件 在 Vue 项目中创建一个登录表单组件,包含用户名和密码输入框以及提交按钮。可以使用 Vue 的模板语法和双…

vue toast实现

vue toast实现

Vue Toast 实现方法 使用第三方库(推荐) 安装 vue-toastification 库,这是一个功能丰富且轻量级的 Vue Toast 插件。 npm install vue-toast…

vue sku 实现

vue sku 实现

Vue SKU 实现方案 在电商系统中,SKU(Stock Keeping Unit)是商品的最小库存单位,通常由多个属性组合而成(如颜色、尺寸等)。以下是基于 Vue 的实现方案。 数据结构设计…