Node.js新手教程:从零开始学习服务器端JavaScript
一、Node.js 是什么?它是用来做什么的?
如果你以前接触过网页开发,那你可能已经了解过 JavaScript。JavaScript 最初是用来在浏览器中控制网页行为的,比如点击按钮弹出提示、页面滚动时改变样式等等。但Node.js 的出现让 JavaScript 不仅仅只能运行在浏览器里,它还能运行在服务器上!
简单来说,Node.js 就是一个让你可以用 JavaScript 来写服务器程序的技术。你可以把它理解为一个“JavaScript 运行环境”,有点像浏览器,但它运行在计算机或者服务器上,而不是网页里。
那为什么要用 Node.js 呢?
- 统一语言:前后端都用 JavaScript,学习成本更低。
- 速度快:Node.js 使用了 Google 的 V8 引擎,执行速度非常快。
- 非阻塞式 I/O:适合处理高并发请求(比如同时有很多人访问你的网站)。
- 丰富的生态:npm 提供了大量的开源模块,帮助你快速开发功能。
举个简单的例子:你想做一个天气预报网站,前端负责展示,后端负责从别的服务器获取天气数据再传给前端。这时候你就可以用 Node.js 来编写这个“中间人”角色的服务器代码。
二、环境准备:一步步带你安装并测试 Node.js

步骤1:下载并安装 Node.js
首先我们要做的就是让电脑能运行 Node.js。
前往官网 https://nodejs.org ,你会看到两个版本可供下载:LTS(长期支持)和 Current(最新版)。作为新手,建议选择 LTS 版本,更加稳定。
点击下载对应你系统的安装包(Windows/macOS/Linux),然后按照引导一步步安装即可。
安装完成后,在命令行中输入以下命令检查是否安装成功:
node -v
如果输出类似 v18.16.0,说明 Node.js 已经安装成功。
接着也可以输入:
npm -v
查看 npm 是否也一起安装成功。npm 是 Node Package Manager,也就是 Node.js 的包管理工具。我们后面会用到它来安装一些额外的功能模块。
步骤2:使用 VS Code 编写代码
虽然你可以用任何文本编辑器来写 JavaScript 文件,但推荐大家使用 Visual Studio Code,简称 VS Code,这是一款免费又强大的代码编辑器,而且对 Node.js 非常友好。
安装好 VS Code 后,打开它,创建一个新的文件夹,例如叫 my-node-project,在这个文件夹下新建一个文件,命名为 app.js。
现在我们就准备好写第一个 Node.js 程序了!
三、核心概念讲解:让你看懂 Node.js 的基本原理和术语
1. 模块系统(Module System)
在 Node.js 中,每一个 .js 文件都被视为一个模块。你可以把模块理解成乐高积木中的一个个小块,每个小块完成特定的功能,通过组合这些模块来构建更大的程序。
示例:创建一个简单的模块
假设我们在项目中有一个 math.js 文件,里面定义了一些数学函数:
// math.js
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
// 把函数导出,这样别的文件才能使用它们
module.exports = { add, subtract };
然后,在 app.js 文件中导入并使用这些函数:
// app.js
const math = require('./math'); // 加载我们自己写的 math.js 文件
console.log(math.add(5, 3)); // 输出 8
console.log(math.subtract(10, 4)); // 输出 6
💡 常见问题:为什么用 require()?Node.js 默认使用 CommonJS 模块规范,所以用的是 require() 和 module.exports,ES6 标准中还有 import/export 方法,但在 Node.js 中默认还不完全支持,可以通过配置启用。
2. 路径路径路径(Path 模块)
在服务器端操作文件和目录时,路径是非常重要的一部分。Node.js 提供了一个内置模块叫 path,用于更安全地拼接和解析路径。
示例:
const path = require('path');
// 拼接路径
const myPath = path.join('src', 'main', 'index.js');
console.log(myPath); // Windows 上输出 src\main\index.js,Linux/Mac 输出 src/main/index.js
// 获取文件名
console.log(path.basename(myPath)); // 输出 index.js
💡 常见问题:什么时候用 __dirname 或 __filename?
__dirname:表示当前模块所在的文件夹路径。__filename:表示当前模块的完整文件路径。
这两个是 Node.js 提供的全局变量,特别适合用于构建相对于当前文件的路径。
3. 事件驱动模型(Event Emitter)
Node.js 是事件驱动的。也就是说,很多操作不是线性执行的,而是通过监听某个“事件”来触发相应的动作。Node.js 提供了 events 模块,让我们可以创建自己的事件对象。
示例:
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
// 监听事件
myEmitter.on('greet', (name) => {
console.log('Hello, ' + name);
});
// 触发事件
myEmitter.emit('greet', 'Tom'); // 输出 Hello, Tom
💡 常见问题:为什么需要事件驱动?
想象你在做一个聊天室应用。用户发送消息时,服务器不会停下来只等一个人发消息。相反,每当有人发消息的时候,系统会触发一个“新消息”事件,其他人都能即时收到。
4. 文件系统(File System 模块)
服务器端经常需要读取或写入文件,比如读取配置文件、保存用户的上传内容等等。Node.js 内置了 fs 模块来处理这些操作。
示例:同步和异步读写文件
const fs = require('fs');
// 同步读取文件
const dataSync = fs.readFileSync('data.txt', 'utf8');
console.log('同步读取:', dataSync);
// 异步读取文件
fs.readFile('data.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log('异步读取:', data);
});
⚠️ 注意:虽然同步方法看起来更简单,但它会阻塞程序直到读完为止。对于服务器端程序来说,更推荐使用异步方法。
四、实战项目:跟着步骤做一个简单的 Web 服务器
现在我们来做一个最简单的服务器程序——当你访问 http://localhost:3000/,服务器就会返回一个欢迎页面。
第一步:安装 Express(可选)
Express 是目前最流行的 Node.js Web 框架之一,它简化了服务器的创建、路由设置等操作。
我们可以使用 npm 来安装:
npm install express
第二步:创建服务器代码
在 app.js 中写下如下代码:
const express = require('express');
const app = express();
const port = 3000;
// 设置一个路由,当用户访问根路径 / 时,返回响应
app.get('/', (req, res) => {
res.send('<h1>Hello, Welcome to My First Server!</h1>');
});
// 让服务器监听指定端口
app.listen(port, () => {
console.log(`服务器正在运行,地址:http://localhost:${port}`);
});
第三步:运行服务器
在终端中进入你的项目文件夹,输入:
node app.js
你会看到输出:服务器正在运行,地址:http://localhost:3000
打开浏览器,访问 http://localhost:3000,你会看到一行大字:“Hello, Welcome to My First Server!”
🎉 成功!你刚刚搭建了自己的第一个 Web 服务器!
五、常见问题解答:新手最容易遇到的问题及解决办法
❓ Q1:我运行 node app.js 报错说找不到 module 怎么办?
可能是你没有安装对应的包。比如上面用了 express,就要先运行:
npm install express
如果还是不行,确保你在一个包含 package.json 文件的目录里运行命令,否则 npm 不知道该往哪儿装包。
❓ Q2:Node.js 是单线程的,那会不会很慢?
Node.js 默认是单线程,但它采用了事件循环机制(Event Loop),可以高效地处理多个请求。只要不执行长时间计算任务,性能依然非常高。如果真的有大量计算需求,可以使用 Worker Threads 或者部署多个 Node.js 实例。
❓ Q3:我的服务器无法访问,显示拒绝连接?
请确认你在本地是否启用了服务器,并且正确设置了防火墙规则。如果你是在远程服务器上运行 Node.js,可能需要开放端口(如 3000)才能被外部访问。
❓ Q4:Node.js 到底能不能写前端代码?
理论上是可以的,但 Node.js 主要是面向服务器端的。前端代码一般运行在浏览器中,而 Node.js 是跑在服务端的一个 JavaScript 引擎。如果你想同时写前后端,可以用 Node.js 搭配 React/Vue 等框架来做全栈开发。
六、下一步学习建议:帮你规划进阶路线图
恭喜你完成 Node.js 入门旅程!接下来你可以继续深入学习以下几个方向:
✅ 推荐学习路径:
基础巩固
- 学习 Node.js 的核心模块(http、os、util、cluster 等)
- 熟练掌握异步编程(Callback、Promise、async/await)
- 熟悉 npm 包管理器与 package.json 的使用
进阶开发
- 学习 Express 或 Koa 框架进行 Web 开发
- 理解中间件概念和 RESTful API 设计
- 使用 MongoDB 或 MySQL 构建数据库接口
- 部署 Node.js 应用(Nginx、PM2、Docker)
全栈实践
- 搭配 React/Vue/Angular 等前端框架开发完整项目
- 实现身份验证、权限控制、实时通信等功能
- 学习 Git 协作与自动化部署流程
高级主题
- 性能优化(内存管理、缓存策略)
- 微服务架构设计
- WebSocket、MQ、定时任务等扩展技能
结语
Node.js 是一个强大且灵活的工具,它的门槛不高,非常适合刚入门的开发者。只要你掌握了基本语法,加上一点逻辑思维,就能写出属于自己的服务器程序。
希望这篇《Node.js 新手教程:从零开始学习服务器端 JavaScript》能够帮助你迈出第一步,开启你的 Node.js 之旅。保持动手练习,不断探索,你会发现编程的世界充满乐趣!
🎉 祝你 coding 快乐,学有所成!

评论 0