Node.js新手教程:从零开始学习服务器端JavaScript
去年十月的一个周五晚上,我蹲在老西关那间35平的出租屋里,窗外是永庆坊修旧如旧的青砖墙,屋里是老婆打游戏时外放的《原神》BGM。我盯着屏幕上那个 Error: Cannot find module 'express' 的报错,心里只有一个念头:老子是不是不适合做程序员?
彼时我已经在家远程办公快一年了,月薪15k,勉强覆盖广州3500的房租、老婆的花呗和两只猫的罐头钱。白天写React组件,晚上看算法题,周末还得陪老婆逛北京路——典型的“表面自由职业,实则社畜PLUS”。
为什么我要学Node.js?
其实一开始我根本不想碰Node.js。
我是前端出身,React玩得挺溜,组件拆分、状态管理、Hooks用得飞起。但每次后端同事甩过来一个API文档,看到那些RESTful接口、JWT鉴权、数据库连接池……我就头皮发麻。
上个月接了个私活,客户说:“你不是全栈吗?顺便把后端也做了吧。”
我说:“我只会调API啊!”
对方冷笑:“现在谁还只写前端?连个简单的登录注册都要等后端排期?”
那一刻,我意识到:光会React,在自由职业市场里就是个高级切图仔。
于是,我咬牙买了本《Node.js实战(第2版)》,花了89块,还包邮。书到手那天,老婆笑我:“你买书的钱够吃三顿炳胜了。”我说:“这书能让我下个月多赚7k。”
从“Hello World”到“404 Not Found”
Node.js入门的第一步,比泡一壶普洱还简单:
// server.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('阿婆叫你回家饮茶!');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
跑起来,浏览器输入 localhost:3000,一行字蹦出来——成了!
我当时激动得差点把老婆的奶茶打翻。
但现实很快教我做人。
我想做个用户登录功能,结果连怎么读取POST请求体都搞不定。翻MDN、查Stack Overflow,最后发现要用 body-parser 中间件(后来才知道Express内置了)。折腾到凌晨两点,终于跑通,但代码丑得像我祖屋的排水管。
更崩溃的是,异步回调地狱来了。
读文件 → 查数据库 → 返回JSON,三层嵌套下来,代码缩进像贪吃蛇。我一度想放弃,心想:“要不还是回去求后端同事帮忙吧?”
但转念一想:自由开发者最大的枷锁,就是依赖别人。
用Express拯救世界
转折点出现在我翻开《Node.js实战》第三章。
作者说:“别自己造轮子,用Express。”
我照着敲:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/login', (req, res) => {
const { username, password } = req.body;
// 这里假装查数据库
if (username === 'laoguang' && password === 'yumcha') {
res.json({ success: true, token: 'fake-jwt-token' });
} else {
res.status(401).json({ error: '饮茶先啦,账号唔对' });
}
});
app.listen(3000);
短短十几行,搞定路由、解析JSON、返回响应。
那一刻,我仿佛听见了珠江夜游船上的汽笛声——通透了!
Express就像React里的组件化思维:把复杂逻辑拆成小块,各司其职。中间件(middleware)更是神来之笔——日志、鉴权、错误处理,一层层叠上去,清晰又灵活。
JavaScript、React、算法,原来是一家亲
很多人以为Node.js只是“用JS写后端”,其实没那么简单。
你得懂 事件循环(Event Loop),不然异步代码会让你怀疑人生;你得会处理 流(Stream),不然大文件上传直接内存爆炸;你甚至还得懂点 算法——比如用LRU缓存优化API响应。
说到算法,我之前刷LeetCode纯粹是为了面试。但学Node.js后才发现:算法不是面试玩具,是性能利器。
比如用哈希表(Object/Map)做用户会话存储,O(1)查找;用队列处理任务调度,避免阻塞主线程。这些在前端可能用不上,但在服务端,每一毫秒都是真金白银。
而React的经验也意外帮了大忙。
Node.js里的模块化(CommonJS)、npm包管理、甚至错误边界(try-catch链),和React的组件树、props传递、错误处理如出一辙。JavaScript生态的统一性,才是全栈开发的最大红利。
真实世界的教训:别信“从零到上线只要1小时”
网上教程总说:“用Node.js+Express+MongoDB,1小时搭个博客系统!”
信了你就输了。
我第一次部署到云服务器,光是Nginx反向代理配了三天。SSL证书申请失败,PM2进程挂掉,数据库连接超时……最惨的是,忘了关调试日志,线上服务器磁盘被日志撑爆,客户半夜打电话骂我:“你个程序佬,搞到我网站崩咗!”
那次之后,我给自己立了三条规矩:
- 本地测试必须覆盖边界情况(比如空输入、超长字符串)
- 永远不要在生产环境开console.log
- 先写README,再写代码(逼自己理清架构)
给新手的建议:别怕慢,就怕停
如果你和我一样,是个只会React的前端,想学Node.js,我的建议很实在:
- 先别碰Koa、NestJS这些高级框架,Express足够你入门半年。
- 别死磕原生http模块,除非你想造轮子或者面试装X。
- 一定要动手做项目,哪怕只是个待办清单API,也比抄十遍教程强。
- 算法不用精通,但基础数据结构要懂,Map/Set/Queue这些天天用。
- 买本书,纸质的——电子书划不动重点,而《Node.js实战》这种经典,翻烂了都不亏。
最重要的是:接受自己会写烂代码。
我现在的Node项目,回头看全是屎山。但没关系,能跑就行。自由职业者的第一要义是交付,不是完美。
结语:技术是工具,人才是目的
如今,我的Node.js私活报价已经涨到22k/月。上周刚帮一个茶饮品牌做了小程序后端,用JWT做用户鉴权,Redis缓存热门商品,还顺手加了个防刷接口的限流算法——全是Node.js生态圈里现成的轮子。
但最让我自豪的,不是技术多牛,而是不再求人。
客户说“加个功能”,我不用再等后端排期;老婆说“做个记账APP”,我能周末两天搞定前后端。
Node.js教会我的,不是如何写服务器代码,而是:真正的自由,来自于掌控全链路的能力。
所以,别再问“前端要不要学Node.js”了。
在这个卷成麻花的行业里,多一项技能,就少一次低头。
下次你看到 Error: Cannot find module,别慌。
泡杯普洱,深呼吸,然后 npm install ——
问题总会解决,茶总会凉,但你的本事,永远热着。
P.S. 那本《Node.js实战》现在躺在我书架最显眼的位置,书角卷了,页脚黄了,但每次看到它,我就想起那个在老西关熬夜debug的夜晚。
值了。

评论 0