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

前端搬砖侠
2025-06-29 10:14
阅读 1028

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

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

你可能听说过 JavaScript,这是网页上让网站“动起来”的编程语言。它通常在浏览器中运行,比如当你看到一个按钮点击后弹出提示框,这就是 JavaScript 在发挥作用。

那有没有想过,JavaScript 也能用来写网站的后台程序呢?这个时候我们就需要用到 —— Node.js

Node.js 到底是什么?

简单来说:

Node.js 是一个可以让 JavaScript 在电脑上(也就是服务器)运行的工具。

过去,JavaScript 只能在浏览器里用;而有了 Node.js,我们可以直接用 JavaScript 写服务端程序,比如:

  • 做一个网站的后端(接收前端发来的请求并处理)
  • 构建 API 接口
  • 自动化任务脚本(例如自动备份文件)
  • 实时聊天应用、游戏服务器等

Node.js 的出现,让很多前端开发者可以直接使用熟悉的 JavaScript 来开发整个项目了!


二、环境准备:安装 Node.js 和编写第一个程序

二、环境准备:安装 Node.js 和编写第一个程序

第一步:安装 Node.js

  1. 打开官网:https://nodejs.org
  2. 点击下载页面上的 LTS(长期支持版),适合新手
  3. 根据你的操作系统(Windows / Mac / Linux)下载对应版本
  4. 双击安装包进行安装,保持默认配置即可完成安装

📌 小贴士:安装完成后可以通过命令查看是否成功:

node -v   # 查看 Node.js 版本号
npm -v    # 查看 npm(Node 的包管理器)版本号

如果输出了类似 v18.16.09.5.1 这样的信息,说明安装成功啦!


第二步:写第一个 Node.js 程序

让我们创建一个简单的 JavaScript 文件,让它运行在 Node.js 中。

示例代码:

  1. 新建一个文件夹,比如叫做 my-node-app
  2. 在这个文件夹下新建一个名为 app.js 的文件
  3. 打开 app.js,输入以下内容:
// 输出一段欢迎语句到控制台
console.log("Hello, Node.js!");
  1. 打开命令行工具(如终端或 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:准备一些静态资源

  1. 创建一个新文件夹,如 static-server
  2. 在里面创建如下结构:
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 学习之旅!

移动端适配方案-2

不过这只是冰山一角,要真正掌握 Node.js,还需要继续深入学习以下方向:

✅ 建议学习路径:

  1. Express 框架
    Express 是 Node.js 最流行的 Web 开发框架,可以帮助你快速搭建功能强大的网站和 API。

  2. MongoDB 或 MySQL 数据库连接
    把 Node.js 和数据库结合起来,可以让你做出有数据存储能力的真实应用。

  3. RESTful API 接口开发
    学会开发标准化接口,供前后端分离项目使用。

  4. 使用 Node.js 搭建 WebSocket 实时通信服务器
    比如做一个实时聊天室。

  5. 了解异步编程与 Promise / async await
    Node.js 大量使用异步编程,必须学会这些概念才能写出高质量代码。

  6. 使用 NPM 包管理系统
    每个项目都会依赖各种第三方模块,学习如何查找、安装和使用它们非常重要。


结语:坚持练习就能成为高手!

前端性能优化图表-1

Node.js 是一个强大又容易上手的技术栈,只要你每天花一点时间动手写代码,很快就能做出属于自己的网站和应用程序。

记住一句话:

“最好的老师不是看视频,而是敲代码。”

快去尝试自己写一个博客网站或者天气预报接口吧!


如果你觉得这篇文章对你有帮助,欢迎收藏、分享,也欢迎你在评论区提出问题,我会尽量帮你解答 😊

评论 0

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