请写一篇关于【Node.js新手教程:从零开始学习服务器端JavaScript】的技术文章

高级孙丽探索者
2025-12-16 02:53
阅读 725

去年十月,我坐在东山口那间月租3500的老破小里,窗外是广州秋天难得的凉意。电脑屏幕上开着三个终端窗口、一个 VS Code 和一份未完成的简历。老婆在厨房煮陈皮红豆沙,香味飘进来,但我心里却像被水泥封住——裸辞已经三个月了,存款还剩不到五万块。

“阿杰,你真不后悔?”她端着糖水进来,轻声问我。

我苦笑:“后悔?当然后悔。但再待下去,怕是要抑郁了。”

那时我在某大厂做前端,每天996,需求改到凌晨三点是常态。项目用的是 React + SpringBoot 的经典组合,后端同事老李总爱开玩笑:“你们前端就是切图仔,接口我们给你写好,你点点鼠标就行。”这话听着刺耳,但更刺心的是——我真的只会点鼠标。遇到跨域、部署、数据库连接这些事,只能干瞪眼等后端救场。

我不想再当“半吊子”了。


为什么选 Node.js?因为“全栈”的梦还没死

Gap 的前两个月,我其实试过转 Python。毕竟 Python 简洁,社区强,AI 又火。我照着《Flask 入门实战》敲了三天,结果部署到阿里云时卡在 Nginx 配置上,折腾到凌晨四点,差点把键盘砸了。

后来一次和前同事阿强喝酒,他现在在一家 SaaS 初创公司做全栈。“你搞 React 的,干嘛不直接学 Node.js?”他一口啤酒下肚,“前后端都是 JavaScript,数据格式都一样(JSON),调试起来不用切换脑子,多爽!”

我愣住了。对啊,我天天写 React,组件里 fetch 调接口调得飞起,为什么不自己写个接口?

那一刻,我决定:从零学 Node.js。


第一个“Hello World”服务器:比泡一壶普洱还简单

10月18号晚上九点,我关掉所有招聘APP,打开 VS Code,新建文件夹叫 my-first-node-server

// server.js
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello from Dongshankou, Guangzhou!');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

在终端输入 node server.js,浏览器打开 localhost:3000——一行字跳出来。那一刻,我居然有点想哭。

不是感动,是释然。原来服务器没那么神秘。它就是一个程序,监听某个端口,收到请求就回点东西。和我写 React 组件“接收 props 返回 JSX”本质上是一回事!

前端思维 + 后端能力 = 真正的自由。


实战:用 Express 搭一个“老婆的甜品订单系统”

光会 Hello World 没用。我想做个真实项目练手。正好老婆打算周末摆摊卖双皮奶,需要个简易接单系统。

需求很简单:

  • 客户填名字、电话、数量
  • 提交后存到本地 JSON 文件
  • 我们能在后台看到订单列表

我用了 Express(Node.js 最流行的框架),因为它像 React 的 Create React App —— 开箱即用。

npm init -y
npm install express

然后写路由:

// app.js
const express = require('express');
const fs = require('fs');
const path = require('path');

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

// 模拟数据库(别笑,初期够用)
const ORDERS_FILE = path.join(__dirname, 'orders.json');

// 获取订单
app.get('/api/orders', (req, res) => {
  const orders = JSON.parse(fs.readFileSync(ORDERS_FILE) || '[]');
  res.json(orders);
});

// 创建订单
app.post('/api/orders', (req, res) => {
  const orders = JSON.parse(fs.readFileSync(ORDERS_FILE) || '[]');
  const newOrder = { id: Date.now(), ...req.body };
  orders.push(newOrder);
  fs.writeFileSync(ORDERS_FILE, JSON.stringify(orders, null, 2));
  res.status(201).json(newOrder);
});

app.listen(4000, () => console.log('甜品订单系统启动!'));

前端我用 React 写了个极简页面,fetch 调这个 API。整个项目三天搞定,部署在我闲置的腾讯云学生机上(一个月10块钱)。

老婆第一次用的时候眼睛发亮:“这比我表姐用的 Excel 强多了!”
我笑着回她:“这可是你老公亲手写的全栈系统。”


对比视角:Node.js vs Python vs SpringBoot

学 Node 的过程中,我不自觉拿它和 Python、SpringBoot 对比——毕竟这是我熟悉的两个“敌人”。

Python(Flask/Django)
优点:语法优雅,AI/数据分析生态无敌。
缺点:异步编程模型不如 Node 原生,部署时经常遇到虚拟环境、依赖版本冲突。对我这种只想快速出活的 solo 开发者,有点重。

SpringBoot(Java)
优点:企业级稳定,微服务生态成熟。
缺点:配置繁琐,启动慢,内存占用高。我在大厂时见过一个简单 CRUD 接口要写 5 个类 + 注解 + XML(虽然现在好多了)。而且……Java 写起来真的不够“爽”。

Node.js
优点:

  • JavaScript 全栈统一,心智负担小
  • npm 包管理天下第一(虽然有时候太碎)
  • 事件驱动、非阻塞 I/O,天生适合高并发 I/O 场景(比如聊天、实时数据)
  • 生态爆炸,Express、Koa、NestJS……总有一款适合你

缺点:

  • 回调地狱(不过 async/await 已经救回来了)
  • CPU 密集型任务弱(但谁让你用 JS 干这个?)
  • 类型系统弱(TS 可以补)

结论:如果你已经是前端(尤其是 React 选手),Node.js 是通往全栈最平滑的路径。


找工作时,Node.js 成了我的“加薪筹码”

今年二月,我开始投简历。面试官一听说我会 React + Node.js,眼睛立刻亮了。

有家公司 HR 直接问:“你能独立开发完整功能模块吗?从前端到部署?”

我说:“可以。上周我还用 Node.js 写了个微信小程序后端,配合 React 做管理后台。”

最后 offer 谈到 22k(之前是 15k),HR 笑着说:“主要是看你有全栈能力,省了我们招两个人的钱。”

技术人最大的安全感,不是大厂 title,而是“我能一个人搞定一件事”的底气。


给想学 Node.js 的新手几点真心话

  1. 别一上来就学 NestJS、TypeScript、MongoDB
    先用原生 http 或 Express 搞懂核心概念:请求、响应、中间件、路由。就像学开车先摸方向盘,别急着改装涡轮增压。

  2. 用你熟悉的前端框架对接
    既然你会 React,就用 fetchaxios 调自己的 Node 接口。看到数据从前端传到后端再返回,那种闭环感超治愈。

  3. 部署一定要动手
    买个最便宜的云服务器(腾讯云/阿里云学生机),用 PM2 启动你的服务。域名解析、Nginx 反向代理这些坑,踩一次就终身难忘。

  4. 别怕“玩具项目”
    我那个甜品订单系统就是玩具,但它让我理解了 RESTful API、CRUD、文件存储。真实项目也是从玩具进化来的。

  5. 和 Python/SpringBoot 不是敌人
    Node 适合 I/O 密集型(Web、API、实时应用),Python 适合数据/AI,Java 适合大型企业系统。真正的高手,知道什么时候用什么工具。


写在最后:技术人的 Gap Year,也可以是重启键

现在我坐在珠江新城的新办公室,窗外是广州塔。月薪涨了,但更珍贵的是心态变了。

我不再焦虑“会不会被替代”,因为我知道:只要能解决问题,就有价值。Node.js 没让我变成架构师,但它给了我“从0到1”的能力——这种能力,比任何框架都重要。

上周五晚上,我又和老婆去东山口散步。路过那间老破小,她笑着说:“要不要进去看看?”

我摇摇头:“不了,新家在琶洲,离公司近。”

但我知道,那段裸辞的日子、那些深夜调试的报错、那个在 localhost:3000 上跳出来的“Hello Guangzhou”,永远是我技术生涯的转折点。

如果你也在迷茫,不妨试试:写一行 Node.js 代码。
说不定,你的新世界,就从这一行开始。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝