Node.js新手教程:从零开始学习服务器端JavaScript
大家好!我是一名211高校计算机专业的研究生,平时喜欢写技术博客帮助编程新人。今天这篇文章,就是源于我当初学Node.js时踩过的坑——文档太抽象、概念太多、不知道学了能干啥。所以这次,我会用最直白的语言 + 可运行的代码 + 真实应用场景,带你从零入门Node.js,并告诉你它和产品、React、爬虫、运营这些关键词有什么关系。
一、Node.js 是什么?为什么值得学?
简单说:Node.js 让你用 JavaScript 写后端程序(服务器)。
以前,JavaScript 只能在浏览器里跑(前端),但自从 Node.js 出现后,我们也能用 JS 写服务器、处理数据库、搭建 API 接口了!
🎯 和“产品”“运营”的关系:
很多产品原型或内部工具(比如用户行为统计、自动报表生成)不需要复杂后端,用 Node.js 快速搭一个服务,运营同学就能直接用了!
🎯 和“React”的关系:
React 是前端框架,Node.js 是后端运行环境。它们常搭配使用:React 负责页面展示,Node.js 提供数据接口(API)。
靶 和“爬虫”的关系:
用 Node.js 可以轻松写网络爬虫(比如抓取商品价格、新闻标题),配合定时任务,自动给运营团队提供数据!
二、环境准备:5分钟搭好开发环境
步骤 1:安装 Node.js
- 打开官网 https://nodejs.org
- 下载 LTS 版本(长期支持,稳定)
- 安装时一路“下一步”即可
步骤 2:验证安装
打开终端(Windows 用 CMD 或 PowerShell,Mac 用 Terminal),输入:
node -v
npm -v
如果看到类似 v18.17.0 和 9.6.7 的版本号,说明安装成功!
✅ 小贴士:
npm是 Node.js 自带的包管理工具,相当于“应用商店”,可以一键安装别人写好的代码库(比如爬虫工具、数据库驱动等)。
三、核心概念:用生活例子讲清楚
1. 模块化(Module)
Node.js 把代码拆成一个个“积木块”(模块),需要时就“拼”起来。
比如你写了一个计算函数:
// math.js
function add(a, b) {
return a + b;
}
module.exports = { add };
在另一个文件中使用:
// app.js
const { add } = require('./math.js');
console.log(add(2, 3)); // 输出 5
💡 我当初学的时候总搞不清
require和import,记住:Node.js 默认用require,后面学 ES6 模块再接触import。
2. 异步与回调(Async & Callback)
Node.js 最大的特点是“非阻塞 I/O”——就像你点外卖,不用站在门口等,可以继续做别的事,饭到了再吃。
// 模拟读取文件(异步操作)
const fs = require('fs');
fs.readFile('data.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log('文件内容:', data);
});
console.log('这行先输出!'); // 先执行!
⚠️ 避坑指南:别在回调里写太多嵌套(“回调地狱”),后面我们会用
async/await解决。
3. npm 包管理
想写爬虫?不用从零造轮子!直接装现成的包:
npm install axios cheerio
axios:发 HTTP 请求(比如访问网页)cheerio:解析 HTML(像 jQuery 一样操作网页内容)
四、实战项目:做一个简单的商品价格爬虫
🎯 场景:运营同学想每天监控某电商平台的商品价格,我们可以用 Node.js 写个爬虫,把价格存到文件里。
步骤 1:初始化项目
mkdir price-crawler
cd price-crawler
npm init -y
步骤 2:安装依赖
npm install axios cheerio
步骤 3:编写爬虫代码(crawler.js)
const axios = require('axios');
const cheerio = require('cheerio');
const fs = require('fs');
async function crawlPrice() {
try {
// 假设我们爬一个公开测试页面(真实项目需遵守 robots.txt)
const url = 'https://example.com/product';
const response = await axios.get(url);
const $ = cheerio.load(response.data);
// 假设价格在 <span class="price">¥99</span> 中
const priceText = $('.price').text();
const price = priceText.replace('¥', '');
// 保存到文件
const log = `${new Date().toLocaleString()}: ¥${price}\n`;
fs.appendFileSync('price-log.txt', log);
console.log('爬取成功!当前价格:', price);
} catch (error) {
console.error('爬取出错:', error.message);
}
}
crawlPrice();
🔍 说明:
实际爬虫需注意:
- 不要频繁请求(加
setTimeout控制频率)- 尊重网站
robots.txt- 部分网站有反爬机制(需用 Puppeteer 等高级工具)
步骤 4:运行爬虫
node crawler.js
你会看到 price-log.txt 文件生成,里面记录了价格和时间!
💡 和“产品”结合:
把这个脚本部署到服务器,每天自动运行,再加个邮件通知,就是一个小型“价格监控产品”了!
五、常见问题解答(FAQ)
| 问题 | 解答 |
|---|---|
| Q:Node.js 和 Java/Python 有什么区别? | Node.js 适合 I/O 密集型任务(如 API 服务、爬虫),不适合 CPU 密集型(如图像处理)。优势是前后端语言统一(JS),开发快。 |
Q:为什么我的 require 报错? |
检查文件路径是否正确(相对路径以 ./ 开头),文件是否存在,是否导出(module.exports)。 |
| Q:怎么让 Node.js 服务一直运行? | 开发用 nodemon(自动重启),生产用 PM2(进程管理工具)。 |
| Q:能和 React 一起用吗? | 当然!React 项目用 create-react-app 生成前端,Node.js 用 Express 写后端 API,通过 fetch 通信。 |
六、学习建议:下一步怎么走?
学 Express 框架
Node.js 原生 API 较底层,Express 能快速搭建 Web 服务:const express = require('express'); const app = express(); app.get('/api/hello', (req, res) => res.json({ msg: 'Hello!' })); app.listen(3000);连接数据库
学 MongoDB(用 Mongoose)或 MySQL(用 mysql2),让你的数据持久化。部署上线
用免费平台如 Render、Vercel(支持 Node.js)、Railway 快速部署,让全世界都能访问你的服务。结合 React 做全栈项目
前端用 React 展示数据,后端用 Node.js 提供 API,打造完整产品原型!
结语
Node.js 不只是“后端技术”,它是产品快速验证的利器。无论是给运营写自动化脚本,还是为 React 应用提供 API,甚至做数据爬虫,它都能胜任。
🌟 记住:不要怕一开始写得不完美。我当初第一个 Node.js 项目连错误处理都没有,但正是这些“烂代码”让我一步步成长为今天的全栈开发者。
现在,打开你的终端,敲下 node -v,开启你的服务器端 JavaScript 之旅吧!
作者:一名爱写博客的211计算机研究生 | 关注我,带你少走弯路学编程

评论 0