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

你可能已经听说过 JavaScript,这是一门用于网页开发的语言。但你知道吗?JavaScript 不只可以写网页,现在还能用来做“后台”工作了!
Node.js 就是让 JavaScript 能够在电脑上运行的一种工具。我们可以用它来创建网站的服务器、处理文件、连接数据库,甚至构建聊天应用等。
简单来说:
- 前端 JavaScript:运行在浏览器里,控制网页内容和用户交互。
- Node.js(后端 JavaScript):运行在你的电脑或服务器上,用来处理请求、操作数据、存储信息等。
Node.js 的优点:
- 基于 JavaScript,学习成本低;
- 高性能、异步非阻塞机制;
- 社区活跃,生态丰富;
- 可快速搭建服务器、API、脚本工具等。
是不是很酷?接下来我们就一步一步来学习!
二、环境准备:安装 Node.js 和相关工具

要使用 Node.js,我们首先得把它安装到电脑上。
步骤1:下载安装 Node.js
访问官网:https://nodejs.org
你会看到有两个版本:LTS(长期支持版)和 Current(最新版),建议新手选 LTS 版本。
点击对应的系统(Windows / macOS / Linux)进行下载,并按照提示完成安装。
安装完成后,打开终端(Mac/Linux)或命令行(Windows - cmd 或 PowerShell),输入以下命令测试是否安装成功:
node -v
如果出现类似这样的输出(数字可能会不同):
v18.15.0
说明 Node.js 安装成功。
再输入:
npm -v
你应该能看到 npm 的版本号。npm 是 Node 的包管理器,它可以帮助你安装各种工具和库。
步骤2:安装一个代码编辑器(推荐 VS Code)
你可以使用任何你喜欢的代码编辑器,比如 Sublime Text、Atom,但我们更推荐 VS Code,它是免费、轻量且强大的。
安装好之后,打开它,我们就可以开始编写我们的第一个 Node.js 程序啦!
三、核心概念:什么是 Node.js 核心模块?
在这一部分,我们会介绍一些关键的概念,并给出代码示例帮助你理解它们。
1. 模块化编程(Module)
在 Node.js 中,每个 .js 文件都是一个模块。你可以把代码拆分成多个文件,然后通过 require() 或 import 来调用这些模块。
示例:模块导出与导入
math.js
// 导出一个加法函数
exports.add = function(a, b) {
return a + b;
};
app.js
// 引入刚才写的 math.js 模块
const math = require('./math');
// 使用模块中的方法
console.log(math.add(3, 4)); // 输出:7
💡 小贴士:
require()是 CommonJS 的语法,广泛用于 Node.js 项目中。ES6 的import也可以使用,但在 Node.js 中需要配置支持。
2. 内置模块
Node.js 自带了很多内置模块,常用有:
fs:操作文件系统path:路径操作http:创建服务器events:事件监听os:操作系统信息
下面来看几个例子。
示例1:使用 fs 模块读取文件
data.txt(先手动创建这个文件,里面写点内容,例如 “Hello from file!”)
readFile.js
const fs = require('fs');
// 同步读取文件(不推荐)
let data = fs.readFileSync('data.txt', 'utf8');
console.log(data);
// 异步读取文件(推荐)
fs.readFile('data.txt', 'utf8', function(err, data) {
if (err) {
console.error("读取失败", err);
} else {
console.log("读取成功:", data);
}
});
执行命令:
node readFile.js
你会在控制台看到文件内容。
✅ 注意:Node.js 支持同步和异步两种方式。但为了提升性能,一般推荐使用异步方式。
示例2:使用 http 创建一个简单的 Web 服务器
server.js
const http = require('http');
// 创建服务器
const server = http.createServer(function(req, res) {
// 设置响应头,状态码为 200,表示成功
res.writeHead(200, { 'Content-Type': 'text/plain' });
// 发送响应内容
res.end('你好,世界!');
});
// 服务器监听 3000 端口
server.listen(3000, function() {
console.log('服务器已启动,在 http://localhost:3000');
});
保存为 server.js 并运行:
node server.js
然后打开浏览器,访问 http://localhost:3000,你就能看到“你好,世界!”这句话了!
3. 回调函数(Callback)
Node.js 的很多操作都是异步的,这就需要用到回调函数。
所谓回调,就是任务完成时会自动执行的函数。
前面的 fs.readFile 和 http.createServer 都用了回调函数。
4. 错误优先的回调约定
Node.js 的异步回调通常第一个参数是错误对象:
fs.readFile('不存在的文件.txt', 'utf8', function(err, data) {
if (err) {
console.error('出错了:', err);
return;
}
console.log('读到了:', data);
});
这种设计让你可以在处理异步操作时优先考虑错误情况。
总结一下 Node.js 的核心概念:
| 名称 | 描述 |
|---|---|
| 模块 | 一个文件就是一个模块,可以用 require 引入 |
| 内置模块 | 如 fs, http, path 等 |
| 异步编程 | Node.js 多数操作是异步的 |
| 回调函数 | 用于异步任务完成后通知程序 |
| 错误优先原则 | 所有回调第一个参数通常是错误对象 |
四、实战项目:做一个简单的留言墙网站
现在我们来一起做一个小项目:留言墙网站(Message Wall)。
功能描述:
- 用户可以通过浏览器访问网址查看所有留言;
- 用户提交留言后显示在页面上;
- 数据暂存在内存中,刷新就重置(后面可扩展存数据库);
第一步:创建项目结构
新建一个项目文件夹,比如叫 message-wall,在里面创建以下文件:
message-wall/
│
├── index.js // 主程序
├── public/ // 存放静态资源(HTML/CSS)
│ └── index.html
└── package.json // 项目配置文件
第二步:初始化项目并安装 Express
我们使用 Express 框架来简化开发。它是一个非常流行的 Node.js Web 开发框架。
在终端进入你的项目目录,运行:
npm init -y
npm install express
这样就安装好了 Express。
第三步:编辑 index.js,创建服务器和接口
index.js
const express = require('express');
const app = express();
const PORT = 3000;
// 模拟一个留言数组
let messages = [];
// 解析 POST 提交的数据(表单格式)
app.use(express.urlencoded({ extended: false }));
// 提供静态 HTML 页面
app.use(express.static('public'));
// 接收 POST 请求添加留言
app.post('/submit', function(req, res) {
const message = req.body.message;
if (!message || message.trim() === '') {
return res.status(400).send('留言不能为空');
}
messages.push(message); // 存进数组
res.redirect('/'); // 重定向回首页
});
// 返回当前所有留言(JSON 格式)
app.get('/messages', function(req, res) {
res.json(messages);
});
// 启动服务器
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});
第四步:创建前端页面 public/index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>留言墙</title>
<style>
body { font-family: sans-serif; padding: 2em; max-width: 600px; margin: auto; }
ul { list-style: none; padding-left: 0; }
li { background: #eee; padding: 10px; margin-bottom: 5px; border-radius: 5px; }
</style>
</head>
<body>

<h1>欢迎来到留言墙 📝</h1>
<!-- 留言框 -->
<form action="/submit" method="POST">
<textarea name="message" rows="3" placeholder="写下你想说的话..." required></textarea><br>
<button type="submit">发送留言</button>
</form>
<hr>
<h2>大家的留言:</h2>
<ul id="message-list"></ul>
<!-- 用 JavaScript 动态加载留言 -->
<script>
fetch('/messages')
.then(response => response.json())
.then(data => {
const list = document.getElementById('message-list');
data.forEach(msg => {
const li = document.createElement('li');
li.textContent = msg;
list.appendChild(li);
});
});
</script>
</body>
</html>
第五步:运行项目
在终端执行:
node index.js
访问 http://localhost:3000,你应该能看到留言界面!
试着写几条留言,看看效果吧 😄
五、常见问题:新手容易遇到的问题和解决方案
以下是一些新手常遇到的问题及解决办法:
问题1:Node 报错提示找不到某个模块?
原因:模块没有安装。
解决:运行 npm install xxx 安装对应模块。
问题2:修改了代码后服务器没反应?
原因:Node.js 默认不会自动重启服务。
解决:每次修改代码后,你需要手动停止服务(按 Ctrl+C),然后重新运行 node xxx.js。
👉 或者使用 nodemon(热更新工具):
npm install -g nodemon
nodemon yourfile.js
问题3:访问 localhost:3000 显示空白页?
检查步骤:
- 是否运行了服务器?
- 浏览器地址栏是否正确?
- 控制台是否有报错?
index.html是否存在且位置正确?
问题4:如何调试 Node.js 程序?
你可以使用断点调试工具。VS Code 内置了调试器,设置如下:
- 打开项目根目录;
- 点击左边侧边栏的“运行和调试”图标;
- 点击“创建 launch.json 文件”,选择 Node.js;
- 添加断点,点击“启动调试”。
问题5:为什么不能直接在浏览器中运行 Node.js 的代码?
因为 Node.js 是运行在服务器上的 JavaScript 运行环境,浏览器有自己的 JS 引擎(如 V8)。Node.js 有些模块(如 fs)只能在本地执行,无法在浏览器中运行。
六、学习建议:下一步的学习路径
恭喜你完成了第一个 Node.js 项目!接下来,你可以继续学习的内容包括:
1. 学习 Express 更多用法
- 路由(route)、中间件(middleware)、模板引擎(如 EJS、Pug)
- Cookie、Session、登录鉴权
- RESTful API 构建
2. 使用数据库
Node.js 支持多种数据库,比如 MongoDB、MySQL、PostgreSQL。
可以尝试使用 ORM 工具如:
- Mongoose(MongoDB)
- Sequelize(MySQL / PostgreSQL)
3. 学习 npm 包的使用与发布
- 安装第三方模块(如 axios、lodash)
- 理解
package.json - 自己发布模块到 NPM
4. 实践更多项目
- 博客系统
- 用户注册/登录系统
- 聊天室(WebSocket)
- 简单 CMS 或管理系统
5. 学习 Node.js 高级知识
- 异步编程(Promise、async/await)
- 文件流处理
- 事件循环原理
- Cluster 模块实现多进程服务器
结语
Node.js 让你在掌握了 JavaScript 的基础上,能够轻松进入后端世界。希望这篇教程能帮助你迈出第一步。
记住:学会编程最重要的是多写、多练、不怕错。遇到问题不要怕,去查文档、搜索、提问,慢慢你就会上手!
如果你觉得这篇文章有帮助,欢迎分享给其他正在学习的朋友。也欢迎持续关注我们后续推出的《Node.js 进阶指南》《Express 全栈开发实战》等内容哦!
Happy Coding! 🎉

评论 0