加班内卷的IT行业,我选择躺平:用 JavaScript 写个“摸鱼计时器”玩转区块链后端

何雨萱○
2025-12-17 15:44
阅读 1885

大家好,我是阿文——一个靠自学从中文系杀进 IT 圈的前文科生。
当初学编程时,我也曾被“996福报论”吓到失眠,每天刷着招聘网站,看到“精通区块链、熟悉后端架构、三年实战经验”的要求就腿软。但后来我发现:技术不是用来卷死自己的,而是帮自己活得更轻松的工具

今天这篇教程,我不教你怎么肝代码升职加薪,而是带你用 JavaScript 做一个“摸鱼计时器”——它会悄悄记录你每天“躺平”的时间,并把数据存到区块链上(别慌,超简单!)。全程零基础可跟,目标只有一个:在卷成麻花的世界里,守住你的摸鱼自由


一、这个项目到底干啥?能帮我少加班吗?

简单说:
我们写一个网页小工具,点一下“开始摸鱼”,它就开始计时;点“结束摸鱼”,就把这次摸鱼时长记录下来。最关键的是——这些记录会存在区块链上,谁也改不了(包括你的老板)。

🤔 区块链听起来很玄?其实它就像一本全公司都能看但没人能涂改的记事本。你写“今天摸鱼2小时”,这行字就永远钉在上面了。

而“后端”就是藏在幕后的服务员:你点按钮,它默默帮你存数据、查记录。我们用 JavaScript 写后端(对,JS 不只能做网页!),轻量又省心。


二、环境准备:5分钟搞定开发工具箱

我当初装环境装到想哭,所以这里给你最简方案:

你需要安装:

  1. Node.js(JavaScript 的运行环境)

    • 官网下载:https://nodejs.org/ → 选 LTS 版(长期稳定版)
    • 装完打开终端,输入 node -v,看到版本号(如 v18.x)就成功了
  2. 一个代码编辑器

    • 强烈推荐 VS Code,免费、轻快、插件多
  3. 一个小技巧:用现成的区块链测试网

    • 我们不用搭复杂节点!直接用 Moralis(一个简化区块链开发的平台)
    • 注册免费账号:https://moralis.io/

💡 避坑指南:别一上来就学 Docker、Kubernetes!先跑通代码,成就感比配置环境重要100倍。


三、核心概念:用大白话讲清楚四个关键词

1. 后端(Backend)

  • 就是“看不见的服务员”。你点“开始摸鱼”,前端(网页)告诉后端:“用户A要摸鱼了!”
  • 后端记下时间,等你点“结束”,再计算时长,最后存到数据库(或区块链)

2. JavaScript(JS)

  • 以前只在浏览器跑,现在也能写后端(靠 Node.js)
  • 语法灵活,适合快速原型开发——正适合我们这种“懒人”

3. 区块链(Blockchain)

  • 本质是一个分布式账本:数据打包成“区块”,按时间连成“链”
  • 一旦写入,几乎无法篡改(改一个区块,后面全得重算,成本极高)
  • 我们用它存摸鱼记录,图的就是“不可抵赖” 😏

4. 实战经验 ≠ 加班时长

  • 真正的实战,是用技术解决真实问题。哪怕只是做个摸鱼计时器,只要完整走通“需求→编码→部署→使用”,就是宝贵经验!

四、实战项目:用 JS 写一个“摸鱼计时器”后端

第一步:初始化项目

打开终端,执行:

mkdir lazy-fish-timer
cd lazy-fish-timer
npm init -y

第二步:安装依赖

我们需要:

  • express:写后端服务的框架(超简单!)
  • moralis:连接区块链的 SDK
npm install express moralis

第三步:写后端代码(server.js

// server.js
const express = require('express');
const Moralis = require('moralis').default;

const app = express();
app.use(express.json());

// 替换成你在 Moralis 控制台拿到的 Application ID 和 Server URL
const MORALIS_APPLICATION_ID = 'YOUR_APP_ID';
const MORALIS_SERVER_URL = 'YOUR_SERVER_URL';

// 初始化 Moralis
Moralis.start({
  applicationId: MORALIS_APPLICATION_ID,
  serverUrl: MORALIS_SERVER_URL
});

// 摸鱼记录模型(在区块链上存为“LazyFish”对象)
const LazyFish = Moralis.Object.extend("LazyFish");

// 开始摸鱼:记录开始时间
let startTime = null;
app.post('/start', (req, res) => {
  startTime = new Date();
  res.json({ message: "摸鱼开始!老板来了叫我~", time: startTime });
});

// 结束摸鱼:计算时长并存到区块链
app.post('/end', async (req, res) => {
  if (!startTime) {
    return res.status(400).json({ error: "还没开始摸鱼呢!" });
  }
  
  const endTime = new Date();
  const duration = Math.floor((endTime - startTime) / 1000); // 单位:秒

  // 创建区块链记录
  const lazyRecord = new LazyFish();
  lazyRecord.set("duration", duration);
  lazyRecord.set("startTime", startTime);
  lazyRecord.set("endTime", endTime);

  try {
    await lazyRecord.save(); // 存到区块链!
    res.json({ 
      message: `摸鱼成功!本次摸鱼 ${duration} 秒`, 
      recordId: lazyRecord.id 
    });
  } catch (error) {
    res.status(500).json({ error: "区块链写入失败:" + error.message });
  }

  startTime = null; // 重置
});

// 查看所有摸鱼记录
app.get('/records', async (req, res) => {
  const query = new Moralis.Query(LazyFish);
  const records = await query.find();
  res.json(records.map(r => r.toJSON()));
});

// 启动服务器
const PORT = 3000;
app.listen(PORT, () => {
  console.log(`摸鱼服务器已启动!访问 http://localhost:${PORT}`);
});

第四步:配置 Moralis

  1. 登录 Moralis 控制台 → Create New Server → 选 Testnet(测试网,免费!)
  2. 复制 Application IDServer URL,填到代码里的 YOUR_APP_IDYOUR_SERVER_URL
  3. 在控制台的“Database”里,你会看到自动创建的 LazyFish

第五步:运行!

node server.js

然后打开另一个终端,用 curl 测试:

# 开始摸鱼
curl -X POST http://localhost:3000/start

# 等10秒...
sleep 10

# 结束摸鱼
curl -X POST http://localhost:3000/end

# 查看记录
curl http://localhost:3000/records

你会看到类似这样的返回:

{
  "message": "摸鱼成功!本次摸鱼 10 秒",
  "recordId": "abc123xyz"
}

✅ 恭喜!你的摸鱼记录已永久存入区块链。老板想删?除非他掌控全球51%的算力 😎


五、新手常见问题 & 解决方案

问题 原因 解决办法
Moralis is not defined 没装或没引入 Moralis 检查 npm install moralis 是否成功,代码首行是否 require('moralis')
存不进区块链 Application ID 填错 回 Moralis 控制台复制,注意别带空格
startTime is null 先点了 end 确保先调 /start 再调 /end
报错 CORS 前端跨域请求 后端加 app.use(cors()),需先 npm install cors

六、学习建议:躺赢的技术成长路径

  1. 别追求“学完再做”
    我当初卡在“必须先学完所有JS语法”,结果半年没写一行代码。记住:边做边学才是王道

  2. 从小项目建立信心
    “摸鱼计时器”虽小,但涵盖了 API 设计、异步处理、外部服务集成——这就是真实后端开发的缩影。

  3. 下一步可以玩这些

    • 给它加个前端页面(HTML + JS)
    • 用 Telegram Bot 接收摸鱼提醒
    • 把数据同步到 Notion,生成月度摸鱼报告
  4. 最重要的一条
    技术是手段,不是目的。学会用工具解放自己,才是真正的“实战经验”


最后送大家一句我贴在显示器上的话:

“代码可以重构,人生不能重来。该摸鱼时就摸鱼,该躺平时就躺平。”

愿你在内卷的浪潮里,做一条快乐的咸鱼 🐟

(项目完整代码已开源,搜索 “lazy-fish-timer” 即可找到)

评论 0

最热最新
暂无评论
何雨萱○Lv.1
0
影响力
0
文章
0
粉丝