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

极客生活家
2025-06-14 04:14
阅读 798

开篇:什么是Node.js?它能用来做什么?

开篇:什么是Node.js?它能用来做什么?

你可能已经听说过 JavaScript,它是网页开发中用于实现页面交互的语言。但你是否知道,JavaScript 不仅仅能在浏览器里运行?Node.js 就是让 JavaScript 能在服务器上运行的工具。

简单来说,Node.js 是一个用 JavaScript 来写后端代码的技术平台。你可以用它来:

  • 创建 Web 服务器
  • 处理用户请求(比如登录、注册)
  • 操作数据库
  • 实现文件上传和下载
  • 甚至开发聊天应用、API 接口等等

这听起来是不是很强大?别担心,我们一步一步来,你不需要一开始就理解所有内容。


环境准备:安装 Node.js 和基本配置

环境准备:安装 Node.js 和基本配置

要开始学习 Node.js,首先你得在电脑上安装它。下面是详细步骤:

步骤 1:去官网下载安装包

打开浏览器访问 https://nodejs.org
点击 "LTS" 版本(这是稳定版,适合初学者)进行下载。

Tips:如果你是 Mac 用户,推荐使用 Homebrew 安装:

brew install node

步骤 2:安装 Node.js

双击下载的安装包,按照提示一路点“下一步”即可完成安装。

步骤 3:验证是否安装成功

打开命令行工具(Windows 上是 CMD 或 PowerShell,Mac 和 Linux 是终端),输入以下命令:

node -v

你会看到类似 v18.15.0 的输出,说明 Node.js 已经安装成功!

再输入:

npm -v

如果能看到 npm 的版本号,那就说明环境已经准备好了。

📌 什么是 npm?它是 Node.js 自带的包管理器,用来安装别人写好的 JavaScript 工具库。


核心概念:用最简单的语言解释关键知识点

核心概念:用最简单的语言解释关键知识点

刚开始学 Node.js 时,有些术语会让你感觉陌生。下面我们用生活中的例子来解释几个核心概念。

1. 模块化编程

就像乐高积木一样,把程序分成一块一块的小功能,每一块都独立存在,需要的时候就调用。这种思想叫做模块化

Node.js 使用 require() 函数来引入模块,例如:

const fs = require('fs');

上面这段代码表示引入 Node.js 内置的“文件系统”模块,可以用来操作文件。

2. 非阻塞 I/O(异步)

传统编程方式处理任务是按顺序来的,比如:

先做饭 ➜ 等饭熟 ➜ 再吃饭 ➜ 再洗碗

而 Node.js 更像是一个会同时处理多件事情的机器人:

煮饭的同时还能洗衣服、听音乐

这就是 Node.js 的特点:异步非阻塞。这意味着它可以高效地处理多个请求,特别适合做网络服务。

下面是一个简单的异步函数示例:

setTimeout(() => {
    console.log("2秒后我才会出现");
}, 2000);
console.log("这句话先出现");

执行结果是:

这句话先出现
2秒后我才会出现

可以看到,Node.js 并不是等定时器完成才继续执行下一条语句,而是“先放着,等时间到再说”。

3. 文件读写(File System)

Node.js 提供了内置模块 fs 来操作文件。我们可以创建、读取、修改甚至删除文件。

举个例子,创建一个名为 hello.txt 的文件,并写入一句话:

const fs = require('fs');

fs.writeFile('hello.txt', 'Hello, Node.js!', (err) => {
    if (err) throw err;
    console.log('文件已保存!');
});

运行这个脚本之后,你的项目目录里就会出现一个 hello.txt 文件。

4. HTTP 服务器

Node.js 最常见的用途之一就是搭建 Web 服务器。我们来试试搭建一个最简单的 Web 服务器吧:

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');
});

将以上代码保存为 server.js,然后在命令行中运行:

node server.js

打开浏览器访问 http://localhost:3000,就能看到一行文字,恭喜!你刚刚亲手打造了一个 Web 服务器!


实战项目:做一个简单的“留言墙”网站

实战项目:做一个简单的“留言墙”网站

理论讲完啦,现在我们动手做一个小项目,帮助你更好地理解和运用所学知识。

我们将用 Node.js 做一个“留言墙”,任何人都可以在页面上提交留言,内容会被显示出来。

第一步:初始化项目结构

新建一个文件夹,比如叫 message-wall,进入该文件夹并创建如下结构:

message-wall/
├── index.html
└── server.js

第二步:编写 HTML 页面

编辑 index.html 文件,写一个简单的留言表单:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>留言墙</title>
</head>
<body>
    <h1>我要留言</h1>
    <form action="/submit" method="POST">
        <label>姓名:</label><input type="text" name="name"><br>
        <label>留言:</label><textarea name="message"></textarea><br>
        <button type="submit">提交留言</button>
    </form>
</body>
</html>

第三步:搭建服务器支持提交功能

虽然我们现在还没学到数据库,但我们先用 Node.js 把数据存到内存中试试看。

打开 server.js,编写以下代码:

const http = require('http');
const fs = require('fs');

let messages = [];

const server = http.createServer((req, res) => {
    if (req.url === '/' && req.method === 'GET') {
        fs.readFile('index.html', 'utf8', (err, data) => {
            if (err) {
                res.statusCode = 500;
                return res.end('读取页面失败');
            }
            res.setHeader('Content-Type', 'text/html');
            res.end(data);
        });
    } else if (req.url === '/submit' && req.method === 'POST') {
        let body = '';
        req.on('data', chunk => {
            body += chunk.toString();
        });
        req.on('end', () => {
            // 解析 form 数据(格式类似于 name=xxx&message=yyy)
            const params = new URLSearchParams(body);
            const name = params.get('name');
            const message = params.get('message');
            
            messages.push({ name, message });
            
            res.writeHead(302, { 'Location': '/' });
            res.end();
        });
    } else {
        res.writeHead(404);
        res.end('找不到页面');
    }
});

server.listen(3000, () => {
    console.log('留言墙服务器运行在 http://localhost:3000');
});

这段代码主要做了三件事:

  1. 当用户访问 / 时,返回 index.html
  2. 当用户提交留言到 /submit 时,接收数据并保存到数组 messages 中。
  3. 提交成功后跳转回首页。

目前我们还没展示留言内容,所以接下来我们给它添加“显示留言”的功能。

第四步:在页面中显示留言内容

为了展示留言,我们需要动态生成 HTML 页面内容,而不是静态文件。

server.js 中找到 GET 请求的部分,将其改为如下代码:

fs.readFile('index.html', 'utf8', (err, data) => {
    if (err) {
        res.statusCode = 500;
        return res.end('读取页面失败');
    }

    // 构造留言列表HTML
    let listHtml = '<ul>';
    messages.forEach(msg => {
        listHtml += `<li><strong>${msg.name}</strong>: ${msg.message}</li>`;
    });
    listHtml += '</ul>';

    // 替换占位符
    const html = data.replace('<!-- MESSAGES -->', listHtml);

    res.setHeader('Content-Type', 'text/html');
    res.end(html);
});

同时,在 index.html 中加入一个占位符:

<!-- MESSAGES -->

这样每次用户访问首页时,都会看到最新的留言内容。

第五步:测试一下

在命令行运行:

node server.js

打开浏览器访问 http://localhost:3000,填写信息并提交,刷新页面看看留言有没有显示出来!

🎉 恭喜你完成了第一个 Node.js 项目!


常见问题解答

响应式布局概念图-1

Q1:Node.js 和 JavaScript 是不是一样的?

A:JavaScript 是一门语言,Node.js 是一个运行 JavaScript 的环境。你可以把它理解为“浏览器外的 JS 运行器”。

Q2:为什么 Node.js 默认没有数据库连接能力?

A:Node.js 本身只是一个运行平台,不包含数据库功能。你需要通过 npm 安装额外的库,如 mysql, mongodb, sequelize 等。

Q3:怎么调试 Node.js 代码?

A:你可以像调试普通 JS 一样使用 console.log() 输出信息,或者使用 VS Code、Chrome DevTools 进行断点调试。


学习建议:下一步该学什么?

你现在掌握了 Node.js 的基础操作和搭建 Web 服务器的能力。接下来推荐你继续学习以下几个方向:

✅ Express 框架

Express 是最受欢迎的 Node.js Web 框架,它简化了很多 HTTP 操作和路由管理。建议学习它来提升效率。

✅ 模板引擎(如 EJS、Pug)

如果你想更方便地生成动态页面内容,模板引擎是一个好选择。

✅ MongoDB / MySQL / PostgreSQL 等数据库连接

学会如何与真实数据库交互,才能做出真正有用的应用。

✅ RESTful API 设计

很多前端项目依赖于后端提供的接口,学会设计 API 是成为全栈开发者的必要技能。


结语

这篇文章为你打下了 Node.js 的坚实基础。记住一句话:“编程是靠练出来的”。即使你现在还不完全理解所有的细节也没关系,关键是不断尝试、犯错、改正,最终你会越走越远!

加油,希望你早日成为一名出色的开发者 💪💻

评论 0

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