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

HTTPS小卫士
2025-06-24 04:59
阅读 249

一、开篇:什么是Node.js?它能做什么?

一、开篇:什么是Node.js?它能做什么?

你是不是也经常听到“前端”、“后端”这些词,但还不太清楚它们之间的区别?别担心,我们一步一步来。

1.1 前端 vs 后端

  • 前端 是网页上你能看到和操作的部分,比如按钮、输入框、图片等等。这部分通常用 HTML、CSS 和 JavaScript 来编写。
  • 后端 则是你看不到的部分,它负责处理数据、验证用户身份、管理数据库等等。常用的后端语言有 Java、Python、PHP 等。

那有没有办法让前端程序员也能写后端呢?有!Node.js 就是为此而生的。

1.2 什么是Node.js?

Node.js 并不是一种新的编程语言,它只是在服务器端运行 JavaScript 的一个工具。

你可以把它理解成一个能让 JavaScript 跑在电脑(或服务器)上的“解释器”。它基于 Google 的 V8 引擎,所以执行速度非常快。

1.3 Node.js 能用来做什么?

  • 搭建网站后台
  • 编写 API 接口(前后端分离时使用)
  • 创建聊天程序
  • 构建命令行工具
  • 实现自动化任务(如文件压缩、代码构建)

总之,只要你懂得 JavaScript,就可以用 Node.js 写出很多有意思的服务器端功能!


二、环境准备:如何安装并配置Node.js开发环境

二、环境准备:如何安装并配置Node.js开发环境

在我们真正开始之前,先得把 Node.js 安装好。

2.1 下载与安装Node.js

访问官方网站:https://nodejs.org

你会看到两个版本:

  • LTS(长期支持版):推荐初学者选择这个,稳定性更好。
  • Current(最新版):如果你已经有些经验,或者想尝鲜新技术,可以选择这个。

点击下载适合你系统的安装包(Windows/macOS/Linux),然后按照提示一步步安装即可。

2.2 验证安装是否成功

打开终端(Windows 用户叫“命令提示符”,Mac 用户可以打开“终端 Terminal”),输入以下命令:

node -v

如果能看到输出类似 v18.x.x 的版本号,说明 Node.js 安装成功了 ✅

再来测试 npm:

npm -v

npm 全名叫做 Node Package Manager,它是随 Node.js 一起安装的一个包管理工具。我们可以用它来安装各种库(插件),后面我们会用到它。

📌 新手小贴士:

如果遇到权限问题导致无法安装某些包,可以用管理员身份运行命令行工具(Windows)或者加 sudo(Mac/Linux)。


三、核心概念讲解

三、核心概念讲解

Node.js 虽然看起来像是 JavaScript,但它运行在服务器上,而不是浏览器里。这带来了几个新概念。

3.1 Node.js 如何运行 JS 文件?

在浏览器里,我们通常通过网页加载 JavaScript 文件。而在 Node.js 中,我们要手动运行 JS 文件。

举个例子,我们新建一个叫 hello.js 的文件,内容如下:

console.log("Hello, Node.js!");

在终端中运行它:

node hello.js

你应该会看到终端输出一句话:“Hello, Node.js!”

🎉 成功啦!

3.2 模块系统(Module System)

Node.js 使用了一个叫 CommonJS 的模块系统。简单来说,就是每个 JS 文件都可以看作是一个“独立的小世界”。

我们可以用 require() 把其他文件里的内容引入进来。

示例:创建两个文件

math.js

function add(a, b) {
    return a + b;
}

module.exports = add; // 导出这个函数

main.js

const add = require('./math'); // 引入刚刚定义的函数

let result = add(5, 3);
console.log('相加结果是:', result);

运行方式:

node main.js

输出应为:

相加结果是: 8

📌 常见疑问

  • 为什么用 ./ 表示当前目录?
    这是一种相对路径写法,在 Node.js 中引用本地文件必须这样写,否则会被当作是安装的第三方库。

3.3 内置模块(Built-in Modules)

Node.js 自带一些常用的模块,比如:

  • fs:用于读写文件
  • path:处理文件路径
  • http:创建 HTTP 服务器

我们来试试最简单的 Web 服务器:

示例:用 http 模块创建一个小服务器

新建文件 server.js

const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('欢迎来到我的 Node.js 小服务器!');
});

server.listen(3000, () => {
    console.log('服务器正在监听 http://localhost:3000');
});

运行命令:

node server.js

然后打开浏览器,访问 http://localhost:3000,你会看到页面显示:

欢迎来到我的 Node.js 小服务器!

恭喜你,你已经写出了人生第一个 Node.js 后端应用了 😄

📌 新手提醒:

每次改完代码都要重新运行一次服务器,否则新改动不会生效。我们可以安装 nodemon 工具来自动重启(后面会讲怎么安装)。


四、实战项目:动手做一个迷你博客API

接下来我们做一个小型项目——简易的博客系统API接口,包含文章列表、添加文章等功能。

4.1 创建项目目录结构

先建一个新的文件夹:

mkdir my-blog-api
cd my-blog-api

然后初始化一个 npm 项目(npm 是 Node.js 的包管理工具):

npm init -y

这样就生成了一个 package.json 文件,里面记录着你的项目的相关信息。

4.2 安装 Express(Node.js 最流行的 Web 开发框架)

我们不直接用 http 模块做整个项目,那样太复杂。我们用一个更强大的框架——Express

安装方法:

npm install express

4.3 写一个基本的 RESTful API

新建文件 app.js

const express = require('express');
const app = express();

// 设置中间件,允许接收 JSON 数据
app.use(express.json());

// 模拟一个文章数组
let posts = [
    { id: 1, title: '第一篇文章', content: '这是第一篇文章的内容' },
    { id: 2, title: '第二篇文章', content: '这是第二篇文章的内容' }
];

// 获取所有文章
app.get('/posts', (req, res) => {
    res.json(posts);
});

// 添加新文章
app.post('/posts', (req, res) => {
    const newPost = req.body;
    posts.push(newPost);
    res.status(201).json(newPost);
});

// 监听端口
app.listen(3000, () => {
    console.log('博客API服务已启动,访问 http://localhost:3000/posts');
});

运行一下看看效果:

node app.js

用浏览器访问:http://localhost:3000/posts,你会看到返回一个 JSON 格式的文章列表。

现在,我们也可以用 POSTMAN 或 curl 测试添加文章功能。

示例:用 curl 添加一篇文章

curl -X POST http://localhost:3000/posts \
     -H "Content-Type: application/json" \
     -d '{"id":3, "title":"第三篇文章", "content":"这是新增的一篇文章"}'

刷新之前的地址就能看到新加的数据了。

4.4 保存文章到本地文件中(使用 fs 模块)

刚才我们把文章保存在内存中,程序一关就没了。我们可以用 fs 模块将数据保存到磁盘上。

修改 app.js

const express = require('express');
const fs = require('fs');
const path = require('path');

const app = express();
app.use(express.json());

// 数据存储路径
const DATA_PATH = path.join(__dirname, 'data.json');

// 初始化读取数据
let posts = [];

try {
    const data = fs.readFileSync(DATA_PATH, 'utf-8');
    posts = JSON.parse(data || '[]');
} catch (err) {
    console.error('读取数据失败,正在初始化空数组');
    posts = [];
}

// 获取所有文章
app.get('/posts', (req, res) => {
    res.json(posts);
});

// 添加新文章
app.post('/posts', (req, res) => {
    const newPost = req.body;
    posts.push(newPost);
    fs.writeFileSync(DATA_PATH, JSON.stringify(posts, null, 2));
    res.status(201).json(newPost);
});

app.listen(3000, () => {
    console.log('博客API服务已启动,访问 http://localhost:3000/posts');
});

这样每次增加文章都会写入到 data.json 文件中,重启也不会丢失了。


五、常见问题解答

5.1 启动Node程序报错:Error: Cannot find module...

这个错误说明你需要安装相应的模块。例如你用了 express,那就应该执行:

npm install express

5.2 修改代码后需要重新启动服务器吗?

是的,Node.js 默认不会自动重载代码。不过可以安装热更新工具 nodemon

npm install -g nodemon

然后用以下命令运行你的项目:

nodemon app.js

当你修改代码保存后,服务器会自动重启。

5.3 为什么我不能在浏览器访问本地文件?

因为浏览器出于安全考虑,不允许直接访问本地文件(如 file:///)。我们需要搭建本地服务器,才能正确访问网页内容。


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

你现在已经掌握 Node.js 的基础,可以开始更深入地学习以下几个方向:

6.1 学习 Express 框架进阶

  • 路由分组
  • 使用中间件(如 cookie-parser、body-parser)
  • 错误处理机制
  • 模板引擎(如 EJS、Pug)

6.2 连接数据库(如 MongoDB、MySQL)

可以尝试用 mongoose 连接 MongoDB,或用 mysql 模块连接 MySQL。

6.3 学习异步编程:Promise 和 async/await

Node.js 大量使用异步编程,掌握这两个知识点非常重要。

6.4 了解 NPM 和 包的发布

你可以自己封装一些常用功能作为包上传到 NPM,供他人或自己使用。


总结

本教程带你从头开始认识 Node.js,学会了如何搭建环境、使用内置模块、搭建一个简单的博客 API,并了解了一些常见问题的解决方案。

记住一点:多动手写代码,才是学好编程的关键!

希望这篇教程能成为你开启 Node.js 旅程的第一步。继续加油,未来可期 💪!


附录:完整项目GitHub参考(模拟链接)
https://github.com/example/nodejs-blog-api

参考资料推荐:

评论 0

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