Node.js新手教程:从零开始学习服务器端JavaScript
开篇:Node.js是什么,用来做什么?

你可能已经听说过 JavaScript,它是网页上最常用的语言之一,用于实现网页的动态交互功能。而 Node.js 让 JavaScript 不再局限于浏览器——它让你可以用同样的语言写网站的后端部分,也就是运行在服务器上的代码。
通俗一点说,Node.js 是一个工具包(或者说是一个环境),它允许你在电脑或服务器上直接运行 JavaScript 代码,从而开发出可以接受用户访问、处理请求、保存数据等功能的网站后端程序。
举个简单的例子,比如你要做一个能接收用户留言并保存到数据库的网站,Node.js 就可以帮助你完成这些“后台工作”。
使用 Node.js 的好处是:
- 你只需要掌握一门语言(JavaScript)就能同时写前端和后端;
- 它适合做实时应用(如聊天室、在线游戏等);
- 社区活跃,有很多现成的模块帮助你快速开发。
现在,我们就开始一步步学习 Node.js 吧!
环境准备:安装 Node.js 和 NPM

在开始编写代码前,我们要先安装 Node.js 和它的小伙伴 NPM。
第一步:下载安装 Node.js
你可以访问 https://nodejs.org 下载安装包。
这里有两个版本:
- LTS 版本(长期支持):推荐初学者使用这个版本,更加稳定。
- Current 版本(最新特性):适用于想尝试新功能的朋友。
点击下载后,按照提示一步步安装即可。
第二步:验证是否安装成功
安装完成后,在你的电脑上打开命令行工具(Windows 用户用 cmd 或 PowerShell,Mac 和 Linux 用户用终端 Terminal),然后输入以下命令:
node -v
如果看到类似 v18.17.0 这样的输出,说明 Node.js 安装成功了。
接着输入:
npm -v
如果也看到版本号,那恭喜你!NPM 也安装好了。
📌 小贴士:
NPM(Node Package Manager)就像是 JavaScript 的软件商店,我们可以用它来下载别人写好的代码模块(例如:快速创建 Web 服务器的模块 Express),大大节省开发时间。
核心概念讲解
这一节我们将带你了解几个非常重要的基础概念:Node.js 的作用、事件循环、模块系统以及如何启动服务器。每个概念都会配合简单代码示例,让你更容易理解。
什么是 Node.js 的作用?
Node.js 其实就是让 JavaScript 能在服务器上跑起来的一个运行环境。它不是一种新的语言,而是对 JavaScript 功能的一个扩展。
示例:打印一句问候语
新建一个文件叫 hello.js,内容如下:
console.log("Hello, 这是我的第一个 Node.js 程序!");
在命令行中切换到该文件所在的目录,然后执行:
node hello.js
你应该会看到输出:
Hello, 这是我的第一个 Node.js 程序!
是不是很简单?没错,这就是 Node.js 的最基本用途:执行 JavaScript 文件。
什么是事件循环(Event Loop)
Node.js 的一大特点是它采用异步非阻塞的方式处理任务。这听起来可能有点抽象,没关系,我们通过生活中的例子来理解一下。
想象你在餐厅点餐,如果服务员要等厨房把饭做好之后才去接待下一位顾客,这就叫 阻塞式;而在 Node.js 中,服务员不会等到饭做好,他会去服务下一个顾客,等饭好了再通知你。这种方式就叫做 非阻塞式 + 异步回调。
示例:用 setTimeout 模拟异步操作
新建文件 event-loop.js,代码如下:
console.log("第一步:开始点餐");
setTimeout(function() {
console.log("第三步:饭菜已好");
}, 2000);
console.log("第二步:继续接待其他客人");
运行代码:
node event-loop.js
你会发现输出顺序是:
第一步:开始点餐
第二步:继续接待其他客人
第三步:饭菜已好
虽然我们在中间设置了两秒延迟,但程序并没有卡住,而是继续执行后面的任务。这就是 Node.js 的事件循环机制。
Node.js 的模块系统
Node.js 使用模块化的方式组织代码。你可以将代码拆分成多个小文件,分别负责不同功能。就像搭积木一样,组合起来就是完整的项目。
Node.js 提供了内置模块(例如:fs 文件系统模块、http 网络模块等),也可以使用社区提供的模块(例如:express 构建 Web 服务器框架)。
示例:使用 fs 模块读取文件
新建文件 read-file.js,代码如下:
// 引入内置模块 fs
const fs = require('fs');
// 读取文件内容
fs.readFile('hello.txt', 'utf8', function(err, data) {
if (err) {
console.error("读取失败:", err);
} else {
console.log("文件内容是:", data);
}
});
在同一目录下新建一个文本文件 hello.txt,里面写几句话,比如:
这是我要读取的内容。
然后运行代码:
node read-file.js
你会看到控制台输出你写的文字。如果你故意改错文件名,它也会提示错误。这就是模块的实用之处。
如何用 Node.js 启动一个服务器?
Node.js 最常见的用途之一就是搭建 Web 服务器。别担心,不需要很复杂就能做到。
示例:创建一个简单的 Web 服务器
新建文件 server.js,代码如下:
// 引入 http 模块
const http = require('http');
// 创建服务器
const server = http.createServer(function(req, res) {
// 设置响应头
res.writeHead(200, {'Content-Type': 'text/plain'});
// 返回响应内容
res.end('欢迎来到我的网站!\n');
});
// 监听端口 3000
server.listen(3000, function() {
console.log('服务器正在运行,访问地址:http://localhost:3000');
});
在命令行中运行:
node server.js
然后打开浏览器访问 http://localhost:3000,你会看到页面显示:
欢迎来到我的网站!
太棒了,你刚刚完成了一个小型 Web 服务器的搭建!
实战项目:构建一个简易留言墙

理论知识掌握得差不多了,现在来实战练习一下吧。我们一起来完成一个“留言墙”的小程序,它可以接收用户的留言,并在页面上展示出来。
步骤一:项目结构规划
我们将使用 http 模块来搭建服务器,用字符串拼接方式生成 HTML 页面。虽然没有使用专业模板引擎,但更适合新手理解。
项目目录结构如下:
message-board/
├── messages.json --> 存储留言的 JSON 文件
└── server.js --> 主程序文件
步骤二:初始化数据文件
先创建一个空的 messages.json 文件,内容为:
[]
这个文件的作用是存储所有留言信息。
步骤三:编写服务器代码
修改 server.js,完整代码如下:
const http = require('http');
const fs = require('fs');
let messages = [];
// 读取已有留言
try {
const data = fs.readFileSync('messages.json', 'utf8');
messages = JSON.parse(data);
} catch (err) {
console.error('读取留言失败:', err);
}
// 创建服务器
const server = http.createServer((req, res) => {
if (req.method === 'GET') {
// 显示留言页面
let html = `
<h1>我的留言墙</h1>
<form method="post" action="/">
<textarea name="message" rows="4" cols="50"></textarea><br/>
<input type="submit" value="提交留言">
</form>
<hr/>
<ul>
`;

messages.forEach(msg => {
html += `<li>${msg}</li>`;
});
html += '</ul>';
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(html);
} else if (req.method === 'POST') {
// 接收留言并保存
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
// 模拟解析表单数据
const message = decodeURIComponent(body.split('=')[1]);
messages.push(message);
// 保存到文件
fs.writeFileSync('messages.json', JSON.stringify(messages));
// 重定向回主页
res.writeHead(302, {'Location': '/'});
res.end();
});
}
});
server.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
这段代码的功能包括:
- 创建 HTTP 服务器;
- GET 请求时显示留言页面;
- POST 请求时接收留言,保存到内存并写入文件;
- 用简单的 HTML 拼接方式展示留言。
✅ 小提醒: 由于我们没使用专业的框架,所以用字符串拼接 HTML 和手动解析 POST 数据,实际开发中建议使用 Express 等框架简化流程。
步骤四:测试留言功能
- 在终端运行服务器:
node server.js
- 打开浏览器访问
http://localhost:3000; - 输入一段留言并提交;
- 刷新页面,留言应该还在;
- 关闭服务器再重启,仍然能看到之前的留言。
🎉 完成啦!你现在拥有了一个可以存留言的小网站!
新手常见问题解答
下面是几个刚接触 Node.js 的同学常遇到的问题和解决方法:
Q1:为什么我的程序报错了?
常见原因包括:
- 文件名或路径写错(例如
fs.readFile('hello.txt'),找不到hello.txt); - 忘记加括号或分号,导致语法错误;
- Node.js 版本过旧或未安装某些依赖模块;
🔍 解决办法:检查错误提示中的具体位置,看是哪一行代码出错;如果是模块缺失,请用 NPM 安装;
Q2:怎么退出服务器?
当你运行 node server.js 启动服务器后,可以在终端按 Ctrl+C 来停止它。
Q3:我写的代码没反应怎么办?
可能是:
- 没有正确监听端口;
- 控制台没有输出提示;
- 浏览器缓存导致页面没更新。
🛠 解决方法:检查是否有 server.listen();尝试清空浏览器缓存;换浏览器测试。
Q4:Node.js 跟浏览器上的 JS 有什么不一样?
最大的区别是:
- Node.js 运行在服务器上,不依赖浏览器;
- 没有 DOM 操作(不能用
document.getElementById()); - 可以访问操作系统资源(如硬盘、网络等)。
学习建议:下一步学什么?
学完这个入门教程后,你可以继续深入以下几个方向:
1. 学习 Express 框架(Web 开发神器)
Express 是最受欢迎的 Node.js Web 框架,能帮你轻松构建路由、处理表单、连接数据库等。官网:https://expressjs.com/
2. 学习 MongoDB / MySQL 数据库连接
学会用 Node.js 操作数据库,可以让你的网站真正具备“记忆能力”。
3. 研究 REST API 开发
REST API 是前后端交互的标准接口,非常适合移动应用、单页应用开发。
4. 试试 WebSocket 做实时通信
如果你喜欢聊天、游戏类项目,Node.js 结合 WebSocket 是最佳选择。
结语:开始你的编程之旅吧!
恭喜你完成了这篇《Node.js新手教程》的学习!你已经掌握了基本的环境搭建、核心概念、模块使用,并动手完成了第一个 Web 项目。接下来,只需持续练习,不断挑战更复杂的项目,你很快就能写出属于自己的完整网站。
记住一句话:“写代码,不要光看,要多动手!”祝你早日成为出色的 Node.js 开发者 🚀!

评论 0