Node.js新手教程:从零开始学习服务器端JavaScript

何思涵
2025-12-15 13:49
阅读 251

大家好!我是一名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

  1. 打开官网 https://nodejs.org
  2. 下载 LTS 版本(长期支持,稳定)
  3. 安装时一路“下一步”即可

步骤 2:验证安装

打开终端(Windows 用 CMD 或 PowerShell,Mac 用 Terminal),输入:

node -v
npm -v

如果看到类似 v18.17.09.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

💡 我当初学的时候总搞不清 requireimport,记住: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 通信。

六、学习建议:下一步怎么走?

  1. 学 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);
    
  2. 连接数据库
    学 MongoDB(用 Mongoose)或 MySQL(用 mysql2),让你的数据持久化。

  3. 部署上线
    用免费平台如 Render、Vercel(支持 Node.js)、Railway 快速部署,让全世界都能访问你的服务。

  4. 结合 React 做全栈项目
    前端用 React 展示数据,后端用 Node.js 提供 API,打造完整产品原型!


结语

Node.js 不只是“后端技术”,它是产品快速验证的利器。无论是给运营写自动化脚本,还是为 React 应用提供 API,甚至做数据爬虫,它都能胜任。

🌟 记住:不要怕一开始写得不完美。我当初第一个 Node.js 项目连错误处理都没有,但正是这些“烂代码”让我一步步成长为今天的全栈开发者。

现在,打开你的终端,敲下 node -v,开启你的服务器端 JavaScript 之旅吧!


作者:一名爱写博客的211计算机研究生 | 关注我,带你少走弯路学编程

评论 0

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