Node.js 新手教程:从零开始学习服务器端 JavaScript
一、开篇:Node.js 是什么?它能做什么?

你可能听说过 JavaScript,这是网页上让网站“动起来”的编程语言。它通常在浏览器中运行,比如当你看到一个按钮点击后弹出提示框,这就是 JavaScript 在发挥作用。
那有没有想过,JavaScript 也能用来写网站的后台程序呢?这个时候我们就需要用到 —— Node.js。
Node.js 到底是什么?
简单来说:
Node.js 是一个可以让 JavaScript 在电脑上(也就是服务器)运行的工具。
过去,JavaScript 只能在浏览器里用;而有了 Node.js,我们可以直接用 JavaScript 写服务端程序,比如:
- 做一个网站的后端(接收前端发来的请求并处理)
- 构建 API 接口
- 自动化任务脚本(例如自动备份文件)
- 实时聊天应用、游戏服务器等
Node.js 的出现,让很多前端开发者可以直接使用熟悉的 JavaScript 来开发整个项目了!
二、环境准备:安装 Node.js 和编写第一个程序

第一步:安装 Node.js
- 打开官网:https://nodejs.org
- 点击下载页面上的 LTS(长期支持版),适合新手
- 根据你的操作系统(Windows / Mac / Linux)下载对应版本
- 双击安装包进行安装,保持默认配置即可完成安装
📌 小贴士:安装完成后可以通过命令查看是否成功:
node -v # 查看 Node.js 版本号
npm -v # 查看 npm(Node 的包管理器)版本号
如果输出了类似 v18.16.0 和 9.5.1 这样的信息,说明安装成功啦!
第二步:写第一个 Node.js 程序
让我们创建一个简单的 JavaScript 文件,让它运行在 Node.js 中。
示例代码:
- 新建一个文件夹,比如叫做
my-node-app - 在这个文件夹下新建一个名为
app.js的文件 - 打开
app.js,输入以下内容:
// 输出一段欢迎语句到控制台
console.log("Hello, Node.js!");
- 打开命令行工具(如终端或 CMD),进入该文件夹,运行以下命令:
node app.js
你会看到输出结果:
Hello, Node.js!
恭喜你!你已经写出了人生中的第一个 Node.js 程序!
三、核心概念讲解:理解 Node.js 的基本原理
虽然我们刚刚只是打印了一个字符串,但其实这里面隐藏了几个非常重要的知识点。接下来我们来逐一介绍这些关键概念,并配合实例说明。
1. 模块系统(Modules)
Node.js 使用模块化的结构来组织代码。每个 .js 文件就是一个模块。
你可以把某个功能封装成一个模块,然后在别的地方引入使用。就像积木一样,可以拼接在一起。
示例:自定义模块
步骤1:创建一个 math.js 文件
// math.js
function add(a, b) {
return a + b;
}
module.exports = {
add: add
};
步骤2:在 app.js 中使用这个模块
// app.js
const math = require('./math'); // 引入 math 模块
console.log(math.add(5, 3)); // 输出 8
运行结果:
8
💡 解释:
module.exports是 Node.js 中导出变量的方式require()是导入其他模块的方法
2. Node.js 中的事件驱动模型(Event Loop)
Node.js 是基于事件驱动和非阻塞 I/O的,这使它特别适合处理并发请求。
什么是“事件”?
举个例子:当用户点击网页上的按钮时,会触发一个“点击事件”。Node.js 很擅长监听和处理这类事件。
示例:使用事件
// events-example.js
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
// 监听一个叫 'greet' 的事件
myEmitter.on('greet', function() {
console.log('Hello from the event!');
});
// 触发这个事件
myEmitter.emit('greet');
运行结果:
Hello from the event!
💡 小结:
on()方法用于监听事件emit()方法用于触发事件
3. 使用内置模块 —— 如何读写文件?
Node.js 提供了很多内置模块,其中一个常用的是 fs(File System 文件系统模块),它可以操作本地磁盘上的文件。
示例:读取一个文本文件
新建一个 hello.txt 文件,内容为:
这是我们要读取的内容
接着修改 app.js:
const fs = require('fs');
fs.readFile('hello.txt', 'utf-8', function(err, data) {
if (err) {
console.error('读取失败:', err);
} else {
console.log('文件内容是:', data);
}
});
运行结果:
文件内容是: 这是要读取的内容
📌 注意:
'utf-8'表示以 UTF-8 编码格式读取文件- 第三个参数是一个回调函数,表示操作完成后执行的操作
4. HTTP 服务器基础:打造最简单的 Web 服务器
Node.js 最常用的用途之一就是创建 Web 服务器。
下面,我们将使用 http 模块来搭建一个最简单的 Web 服务器。
示例:创建服务器并返回响应
// server.js
const http = require('http');
http.createServer(function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('你好,我是 Node.js 服务器!');
}).listen(3000);
console.log('服务器正在运行在 http://localhost:3000/');
运行方式:
node server.js
打开浏览器访问 http://localhost:3000/,你会看到:
你好,我是 Node.js 服务器!
🎉 成功!这是一个完整的 Web 服务器,虽然是最简单的形式,但它已经在工作啦!
四、实战项目:制作一个静态资源服务器
为了让知识更实用,我们现在来做一个小项目:使用 Node.js 搭建一个简单的静态资源服务器,可以返回 HTML 页面、图片、CSS 文件等内容。
步骤1:准备一些静态资源
- 创建一个新文件夹,如
static-server - 在里面创建如下结构:
static-server/
├── public/
│ ├── index.html
│ └── style.css
└── server.js
在 index.html 中写点内容:
<!DOCTYPE html>
<html>
<head>
<title>我的Node服务器</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>欢迎来到我的 Node.js 静态服务器</h1>
</body>
</html>
在 style.css 中写样式:
h1 {
color: green;
}
步骤2:编写服务器代码
修改 server.js:
const http = require('http');
const fs = require('fs');
const path = require('path');
const server = http.createServer((req, res) => {
// 设置根目录为 public 文件夹
let filePath = './public' + req.url;
// 默认加载 index.html
if (filePath === './public/') {
filePath = './public/index.html';
}
// 获取文件扩展名判断 MIME 类型
const extname = String(path.extname(filePath)).toLowerCase();
const mimeTypes = {
'.html': 'text/html',
'.css': 'text/css'
};
const contentType = mimeTypes[extname] || 'application/octet-stream';
// 读取文件并发送
fs.readFile(filePath, function(error, content) {
if (error) {
if (error.code == 'ENOENT') {
res.writeHead(404);
res.end('页面未找到');
} else {
res.writeHead(500);
res.end('服务器错误');
}
} else {
res.writeHead(200, { 'Content-Type': contentType });
res.end(content, 'utf-8');
}
});
});
server.listen(3000, () => {
console.log('静态服务器已启动,地址:http://localhost:3000/');
});
运行方式:
cd static-server
node server.js
现在访问:http://localhost:3000/,你会看到绿色标题的网页!
五、常见问题解答:新手常遇到的问题 & 对应解决方法
以下是一些初学者常见的问题和解答:
| 问题 | 解答 |
|---|---|
Q1: Cannot find module xxx 怎么办? |
使用 npm install 模块名 安装缺失的模块 |
Q2: 启动服务器时报错 EADDRINUSE |
端口号被占用了,换个端口号试试,比如 3001 |
| Q3: 改了代码后服务器没更新怎么办? | Node 不会自动重启,需要手动停止再运行 node app.js |
Q4: TypeError: Cannot read property 'xxx' of undefined |
变量未定义就去访问属性,请检查逻辑 |
| Q5: 如何调试 Node.js 程序? | 可以在 Chrome 开发者工具中使用断点调试,也可以用 console.log() 打印调试信息 |
六、学习建议:下一步该怎么学?
恭喜你完成了第一段 Node.js 学习之旅!

不过这只是冰山一角,要真正掌握 Node.js,还需要继续深入学习以下方向:
✅ 建议学习路径:
Express 框架
Express 是 Node.js 最流行的 Web 开发框架,可以帮助你快速搭建功能强大的网站和 API。MongoDB 或 MySQL 数据库连接
把 Node.js 和数据库结合起来,可以让你做出有数据存储能力的真实应用。RESTful API 接口开发
学会开发标准化接口,供前后端分离项目使用。使用 Node.js 搭建 WebSocket 实时通信服务器
比如做一个实时聊天室。了解异步编程与 Promise / async await
Node.js 大量使用异步编程,必须学会这些概念才能写出高质量代码。使用 NPM 包管理系统
每个项目都会依赖各种第三方模块,学习如何查找、安装和使用它们非常重要。
结语:坚持练习就能成为高手!

Node.js 是一个强大又容易上手的技术栈,只要你每天花一点时间动手写代码,很快就能做出属于自己的网站和应用程序。
记住一句话:
“最好的老师不是看视频,而是敲代码。”
快去尝试自己写一个博客网站或者天气预报接口吧!
如果你觉得这篇文章对你有帮助,欢迎收藏、分享,也欢迎你在评论区提出问题,我会尽量帮你解答 😊

评论 0