加班内卷的IT行业,我选择躺平:用 JavaScript 写个“摸鱼计时器”玩转区块链后端
大家好,我是阿文——一个靠自学从中文系杀进 IT 圈的前文科生。
当初学编程时,我也曾被“996福报论”吓到失眠,每天刷着招聘网站,看到“精通区块链、熟悉后端架构、三年实战经验”的要求就腿软。但后来我发现:技术不是用来卷死自己的,而是帮自己活得更轻松的工具。
今天这篇教程,我不教你怎么肝代码升职加薪,而是带你用 JavaScript 做一个“摸鱼计时器”——它会悄悄记录你每天“躺平”的时间,并把数据存到区块链上(别慌,超简单!)。全程零基础可跟,目标只有一个:在卷成麻花的世界里,守住你的摸鱼自由。
一、这个项目到底干啥?能帮我少加班吗?
简单说:
我们写一个网页小工具,点一下“开始摸鱼”,它就开始计时;点“结束摸鱼”,就把这次摸鱼时长记录下来。最关键的是——这些记录会存在区块链上,谁也改不了(包括你的老板)。
🤔 区块链听起来很玄?其实它就像一本全公司都能看但没人能涂改的记事本。你写“今天摸鱼2小时”,这行字就永远钉在上面了。
而“后端”就是藏在幕后的服务员:你点按钮,它默默帮你存数据、查记录。我们用 JavaScript 写后端(对,JS 不只能做网页!),轻量又省心。
二、环境准备:5分钟搞定开发工具箱
我当初装环境装到想哭,所以这里给你最简方案:
你需要安装:
Node.js(JavaScript 的运行环境)
- 官网下载:https://nodejs.org/ → 选 LTS 版(长期稳定版)
- 装完打开终端,输入
node -v,看到版本号(如 v18.x)就成功了
一个代码编辑器
- 强烈推荐 VS Code,免费、轻快、插件多
一个小技巧:用现成的区块链测试网
- 我们不用搭复杂节点!直接用 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
- 登录 Moralis 控制台 → Create New Server → 选 Testnet(测试网,免费!)
- 复制
Application ID和Server URL,填到代码里的YOUR_APP_ID和YOUR_SERVER_URL - 在控制台的“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 |
六、学习建议:躺赢的技术成长路径
别追求“学完再做”
我当初卡在“必须先学完所有JS语法”,结果半年没写一行代码。记住:边做边学才是王道。从小项目建立信心
“摸鱼计时器”虽小,但涵盖了 API 设计、异步处理、外部服务集成——这就是真实后端开发的缩影。下一步可以玩这些:
- 给它加个前端页面(HTML + JS)
- 用 Telegram Bot 接收摸鱼提醒
- 把数据同步到 Notion,生成月度摸鱼报告
最重要的一条:
技术是手段,不是目的。学会用工具解放自己,才是真正的“实战经验”。
最后送大家一句我贴在显示器上的话:
“代码可以重构,人生不能重来。该摸鱼时就摸鱼,该躺平时就躺平。”
愿你在内卷的浪潮里,做一条快乐的咸鱼 🐟
(项目完整代码已开源,搜索 “lazy-fish-timer” 即可找到)

评论 0