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

编程.何红.法师
2025-06-18 18:18
阅读 720

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

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

你可能听说过 JavaScript 是一种前端语言,用来让网页动起来,比如按钮点击、弹窗提示等功能。但其实,JavaScript 不仅仅只能用在浏览器里!

Node.js 让 JavaScript 可以运行在电脑的“后台”,也就是我们常说的“服务器”上。这样一来,JavaScript 就不再只是页面上的小功能,而是可以构建网站后端、搭建API、处理数据、连接数据库等等。

简单地说:

  • 前端 JavaScript:负责网页的交互(比如按钮动效)
  • Node.js:负责服务器逻辑(比如用户登录、数据存储)

有了 Node.js,你现在可以用一种熟悉的语言(JavaScript)去开发完整的网站或应用。


环境准备:搭建你的第一个Node.js开发环境

环境准备:搭建你的第一个Node.js开发环境

第一步:安装Node.js

要使用 Node.js,首先得把它安装到你的电脑上。

Windows系统:

  1. 打开官网:https://nodejs.org
  2. 下载 LTS 版本(长期支持版,更适合初学者)
  3. 双击安装程序,一路下一步即可完成安装

macOS系统:

推荐使用 Homebrew 安装:

brew install node

Linux系统:

使用 apt-get(Ubuntu为例):

sudo apt update
sudo apt install nodejs

小贴士:安装完成后,在终端输入 node -vnpm -v 可查看是否安装成功。


第二步:准备开发工具

建议你使用一个代码编辑器来写 Node.js 代码。推荐两个:

  • VS Code(Visual Studio Code):免费、强大、插件丰富
  • WebStorm:专业级IDE,适合深入学习后使用

下载地址:


第三步:创建第一个Node.js项目

  1. 新建一个文件夹,比如叫 my-first-node-app
  2. 在这个文件夹中新建一个文件:app.js
  3. 输入以下代码:
console.log("你好,Node.js!");
  1. 打开终端(命令行),进入该文件夹并运行:
node app.js

如果终端输出了:

你好,Node.js!

恭喜你,你的第一个 Node.js 程序运行成功啦!


核心概念:理解Node.js的关键知识点

核心概念:理解Node.js的关键知识点

下面是一些 Node.js 中的核心概念,我会用最简单的语言解释清楚。


模块化编程:什么是模块?

在 Node.js 中,我们把代码拆分成一个个“模块”,就像乐高积木一样。每个模块只做一件事,组合在一起就可以做大事。

Node.js 提供了一些内置模块,比如:

  • fs:操作文件和文件夹
  • path:路径拼接
  • http:创建 HTTP 服务器

你也可以自己定义模块。

示例:使用 fs 模块读取文件

新建一个文本文件 hello.txt,内容为:

这是测试文件的内容。

再修改 app.js 内容如下:

const fs = require('fs');

fs.readFile('hello.txt', 'utf8', function(err, data) {
    if (err) {
        console.error("读取文件出错", err);
    } else {
        console.log("文件内容是:", data);
    }
});

运行命令:

node app.js

你会看到输出:

文件内容是: 这是测试文件的内容。

异步编程:Node.js的“多线程”方式

Node.js 的一大特点就是异步非阻塞。这意味着它不需要等上一个任务完成才进行下一个任务,而是边做边继续执行别的任务。

这听起来有点抽象?那我打个比方:

想象你在点外卖:

  • 同步方式:下单 → 等待送达才能继续干别的事
  • 异步方式:下单 → 继续看视频、打电话,外卖送到时再吃

在 Node.js 中,我们通常使用 回调函数Promiseasync/await 来处理异步任务。

示例:使用 async/await 实现异步文件读取

const fs = require('fs').promises;

async function readMyFile() {
    try {
        const data = await fs.readFile('hello.txt', 'utf8');
        console.log("文件内容是:", data);
    } catch (err) {
        console.error("出错了!", err);
    }
}


![JavaScript框架对比-1](https://code-guide.oss.shanghai.autogptai.club/common/file/download?name=date2025061818/773a26bc-f0f4-413a-b452-370c4ed3f3e8.jpg)


readMyFile();

运行效果和前面一样,但这次用了更现代的方式:async/await


包管理器 NPM:Node.js的“软件商店”

NPM 是 Node.js 自带的一个工具,叫做“包管理器”。你可以通过它下载、安装别人已经写好的代码库(称为“包”或“模块”),然后在你的程序中直接使用。

示例:安装和使用一个第三方包 lodash

Lodash 是一个非常流行的工具类库,提供了很多实用函数。

安装:

npm install lodash

使用示例:

const _ = require('lodash');

const array = [1, 2, 3, 4, 5];
const shuffled = _.shuffle(array);

console.log("随机打乱后的数组:", shuffled);

运行结果类似:

随机打乱后的数组: [3, 1, 5, 2, 4]

这就是 NPM 的强大之处 —— 轻松引入已有工具,节省开发时间!


HTTP服务器:打造自己的网站后端

Node.js 最常见的用途之一就是搭建一个 Web 服务器。我们可以用它来接收浏览器请求,返回 HTML 页面或 JSON 数据。

示例:创建一个基础HTTP服务器

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('服务器正在监听端口 3000...');
});

保存为 server.js,运行:

node server.js

打开浏览器,访问:

http://localhost:3000

你会看到一行文字:

欢迎访问我的Node.js服务器!

🎉 你刚刚搭建了一个属于自己的小型 Web 服务器!


实战项目:做一个简单的天气查询 API

实战项目:做一个简单的天气查询 API

接下来我们将一步步用 Node.js 构建一个“天气查询接口”。

功能说明:

  1. 用户访问 /weather?city=北京 这样的地址
  2. 我们调用一个第三方天气 API 获取数据
  3. 返回 JSON 格式的天气信息

第一步:选择一个天气 API 接口

这里我们用一个公开的测试 API:

https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=北京

你需要注册获取一个免费的 KEY(可参考 weatherapi.com 注册获取)。


第二步:安装请求网络数据的模块

Node.js 默认没有发送网络请求的功能,我们需要借助第三方模块 axios

安装:

npm install axios

第三步:编写完整代码

const http = require('http');
const url = require('url');
const axios = require('axios');

// 替换成你的 API KEY
const API_KEY = '你的APIKEY';

// 创建服务器
const server = http.createServer(async (req, res) => {
    const parsedUrl = url.parse(req.url, true);
    const query = parsedUrl.query;
    
    if (parsedUrl.pathname === '/weather') {
        const city = query.city;
        
        if (!city) {
            res.writeHead(400, {'Content-Type': 'application/json'});
            res.end(JSON.stringify({ error: '请指定城市名' }));
            return;
        }
        
        try {
            const response = await axios.get(`https://api.weatherapi.com/v1/current.json?key=${API_KEY}&q=${city}`);
            
            res.writeHead(200, {'Content-Type': 'application/json'});
            res.end(JSON.stringify(response.data));
        } catch (error) {
            res.writeHead(500, {'Content-Type': 'application/json'});
            res.end(JSON.stringify({ error: '获取天气数据失败' }));
        }
    } else {
        res.writeHead(404, {'Content-Type': 'application/json'});
        res.end(JSON.stringify({ error: '未找到该路由' }));
    }
});

// 启动服务器
server.listen(3000, () => {
    console.log('天气API服务器启动在 http://localhost:3000');
});

第四步:测试接口

启动服务器:

node weather-server.js

在浏览器访问:

http://localhost:3000/weather?city=北京

如果一切顺利,你会看到类似如下格式的 JSON 响应数据:

{
  "current_condition": {
    "humidity": 68,
    "temp_C": 25,
    "weatherDesc": [
      { "value": "Partly cloudy" }
    ]
  }
}

🎉 你的第一个真正的 Node.js 后端接口完成了!


常见问题:新手容易遇到的坑及解决办法

问题1:运行 node app.js 报错:Error: Cannot find module XXXX

原因:缺少某个依赖模块
解决办法:先运行 npm install xxxxx 安装所需模块


问题2:Node.js代码运行没反应,也不报错

原因:可能是异步代码没有触发或者逻辑有错误
解决办法:加 console.log() 打印调试,或者用断点调试工具


问题3:访问不到本地启动的服务器

原因:可能是防火墙阻挡、或IP地址不对
解决办法:确保用的是 localhost 或正确 IP;关闭防火墙试试


问题4:如何查看 Node.js 的版本?

运行:

node -v

问题5:如何退出 Node.js 启动的服务器?

按键盘快捷键:

Ctrl + C

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

移动端适配方案-2

恭喜你完成了 Node.js 的入门学习!你现在可以:

✅ 理解 Node.js 的基本原理
✅ 会搭建本地服务器
✅ 使用异步处理数据
✅ 构建一个简单的 API 接口

接下来推荐你继续学习以下几个方向:

1. Express.js —— 更方便的 Node.js Web 框架

Express 可以帮你更容易地搭建 Web 应用,简化路由、中间件、模板引擎等操作。

学习资源:Express 中文文档

2. MongoDB + Mongoose —— 搭配数据库

Node.js 非常适合搭配 NoSQL 数据库 MongoDB。Mongoose 是它的常用 ORM 工具。

3. RESTful API 设计与实践

学习怎么设计规范的 API 接口,是迈向全栈开发的重要一步。

4. JWT 登录认证机制

了解用户登录、权限验证的工作原理


结语:坚持就是胜利!

前端开发者学完 Node.js 后,就可以从前到后独立开发完整的项目,这对职业发展帮助极大。

记住一句话:“不要怕犯错,只要不停敲代码,你就一直在进步。

现在就打开你的编辑器,从今天起,写属于你自己的 Node.js 项目吧!🚀

评论 0

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