自我探索之路:摸鱼实现计时器工具1.0版本之路

在一个快要下班的时刻,我刚刚完成了一项颇有成就感的工作——大小写转换器和Chmod计算器的开发。这两个工具,就像是我亲手培育的两朵小花,虽然简单,却充满了实用与便捷,让我感到无比的满足。

然而,我并没有停下手中的工作,因为在我的心中,还有一个更加有趣的项目正等待着我去完成。趁着现在还有些许闲暇时光,我决定继续我的在线工具系列,这一次,我要创造的是一个高效在线计时器

我坐在电脑前,双手轻轻搭在键盘上,心中充满了期待与兴奋。这个计时器,我希望它能成为一款既简洁又强大的页面版工具,无论用户身处何地,只要打开浏览器,就能立刻享受到它带来的便捷与高效。它不需要繁琐的安装过程,不占用宝贵的电脑资源,只需轻轻一点,就能开启一段精准的时间旅程。

我闭上眼睛,想象着这个计时器在用户手中的模样:它有着清爽的界面,没有多余的装饰,只有最核心的计时功能。无论是忙碌的学习时光,还是紧张的工作时刻,亦或是悠闲的日常生活,它都能成为用户最得力的助手,帮助他们更好地掌控时间,提高效率。

想到这里,我睁开眼,开始将脑海中的构思转化为实际的代码。一行行代码在我的指尖跳跃,如同跳动的音符,编织出一首关于时间与效率的乐章。我沉浸在编程的世界里,忘记了时间的流逝,忘记了周围的一切。每当遇到难题,我都会耐心地思考,寻找最优的解决方案;每当解决一个bug,我都会感到一阵由衷的喜悦,仿佛又向目标迈进了一步。

随着时间的推移,我的高效在线计时器逐渐成形。它有着清晰的时间显示,灵活的计时设置,以及贴心的提醒功能。我测试着它的每一个功能,确保它都能稳定运行,满足用户的需求。当我看到屏幕上那个简洁而强大的计时器时,我的心中充满了自豪与满足。

而在这个过程中,我也发现了一个有趣的现象:每当我远离繁重的工作任务,专注于自己真正感兴趣的项目时,我的效率和状态都会达到前所未有的高峰。这种“摸鱼”式的工作方式,虽然听起来有些不务正业,但却让我找到了创作的乐趣与动力。我意识到,真正的创造力往往源自于内心的热爱与自由,而非外界的压力与束缚。

于是,我更加珍惜这段能够自由发挥的时光,继续在我的编程世界里探索与创造。我相信,只要保持这份热爱与坚持,我一定能够创造出更多优秀的作品,为这个世界带来更多的便利与美好。


<template>

  <tool-info :tool="tool" :readme="VueComponent">

    <template #body>

      <c-card shadow="never">

        <el-row justify="center" >

          <el-col :xs="24" :sm="16" :md="16" align="center">

            <el-divider/>

            <el-text style="font-size: 50px;"> {{ formatMs(counter) }}</el-text>

            <el-divider/>

          </el-col>

        </el-row>

        <el-row justify="center">

          <el-col :xs="24" :sm="16" :md="16" align="center">

            <el-button v-if="!isRunning" type="primary" @click="resume">{{$t('tools.chronometer.button.start')}}</el-button>

            <el-button v-else type="warning" @click="pause">{{$t('tools.chronometer.button.stop')}}</el-button>

            <el-button @click="counter = 0">{{$t('tools.chronometer.button.reset')}}</el-button>

          </el-col>

        </el-row>

      </c-card>

    </template>

</tool-info>

</template>


<script setup lang="ts">

import { tool } from './index';

import ToolInfo from '@/components/ToolInfo.vue';

import  {VueComponent}  from './README.md';

import { useRafFn } from '@vueuse/core';

import { ref } from 'vue';

import { formatMs } from './chronometer.service';

const isRunning = ref(false);

const counter = ref(0);

let previousRafDate = Date.now();

const { pause: pauseRaf, resume: resumeRaf } = useRafFn(

  () => {

    const deltaMs = Date.now() - previousRafDate;

    previousRafDate = Date.now();

    counter.value += deltaMs;

  },

  { immediate: false },

);

function resume() {

  previousRafDate = Date.now();

  resumeRaf();

  isRunning.value = true;

}

function pause() {

  pauseRaf();

  isRunning.value = false;

}

</script>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容