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

码上见山
2025-06-12 21:05
阅读 218

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

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

在传统意义上,JavaScript 是一种运行在浏览器中的语言,用于控制网页的交互逻辑。比如你点击一个按钮弹出提示框、表单验证等。

Node.js(简称 Node)是一个让你能在电脑上运行 JavaScript 的工具。简单来说:

🧠 Node.js = JavaScript + 可以写服务端程序的工具包

Node.js 出现于 2009 年,它的最大特点就是让前端开发者也能轻松写后端代码。也就是说,你可以用一套语言 —— JavaScript,来同时开发网页和后台服务!

Node.js 能做什么?

  • 搭建 Web 服务器
  • 处理文件读写
  • 构建 API 接口供 App 使用
  • 创建聊天应用(如 WebSocket)
  • 开发命令行工具(CLI)
  • 搭建静态资源服务器
  • 和数据库打交道等等

是不是感觉很酷?那就让我们一步一步来体验吧!


⚙️ 第一步:搭建开发环境

⚙️ 第一步:搭建开发环境

响应式布局概念图-2

在我们正式编写代码之前,先要准备好我们的“工具箱”。

✅ 步骤一:安装 Node.js

  1. 打开官方网站:https://nodejs.org
  2. 点击绿色按钮下载 LTS(长期支持版)版本(推荐初学者使用)
  3. 安装过程非常傻瓜式,一路“下一步”即可完成

✅ 步骤二:检查是否安装成功

打开你的电脑终端(Windows 用 CMD 或 PowerShell,Mac/Linux 用终端 Terminal),输入以下命令:

node -v

你会看到输出类似:

v18.17.1

说明 Node 已经安装成功啦!🎉

再检查 npm(Node.js 包管理器):

npm -v

输出类似:

9.x.x

一切正常!


📦 核心概念:Node.js 的几个重要知识点

📦 核心概念:Node.js 的几个重要知识点

学编程就像搭积木,我们要先认识各种积木块。下面我们来看看一些基础但非常重要的概念。


1️⃣ 模块(Module)

在 Node.js 中,模块(Module)是代码组织的基本单位,相当于一个个小功能包。

比如我们可以引入 fs 模块来操作文件,用 http 模块搭建服务器。

示例:引入 fs 模块(文件系统模块)

创建一个文件:readFile.js

// 引入内置模块
const fs = require('fs');

// 同步读取一个文件内容
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);

然后在同目录下创建 example.txt 文件,里面随便写一句话,比如:

Hello, this is a test file.

在终端运行:

node readFile.js

你会看到输出该文件的内容!


2️⃣ 全局对象与全局变量

在浏览器中,JavaScript 有 window 对象;而在 Node.js 中,全局对象是 global

例如我们可以这样定义一个全局变量:

global.myName = "Node Beginner";
console.log(global.myName); // 输出:Node Beginner

不过不建议频繁使用全局变量哦,容易造成混乱。


3️⃣ 阻塞 vs 非阻塞 & 回调函数

Node.js 最大的特点是“非阻塞 I/O”,意思是它擅长处理多个并发请求,比如很多用户访问网站时,Node 可以处理得非常快。

但这意味着有些函数不会立刻返回结果,而是等事情做完了再通知你,这种机制叫做——回调函数

示例:异步读文件

const fs = require('fs');

fs.readFile('example.txt', 'utf8', function (err, data) {
    if (err) throw err;
    console.log("文件内容是:" + data);
});

console.log("这条信息会先显示");

你会发现:“这条信息会先显示”先出现在终端,然后才是文件内容。这就是异步编程的魅力!


4️⃣ 事件机制(EventEmitter)

Node.js 内置了 EventEmitter 类,可以用来监听并响应各种事件。

示例:自定义事件

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('sayHi', () => {
    console.log('Hello from event!');
});

myEmitter.emit('sayHi'); // 触发事件

运行后会输出:

Hello from event!

这个机制常用于构建复杂的异步交互系统。


5️⃣ NPM —— Node 的包管家

NPM(Node Package Manager)是 Node.js 的官方包管理器。你可以把它想象成手机上的应用商店 —— 只要有需要的功能,搜索一下就能下载。

比如我们想安装一个叫 lodash 的工具库来简化数组操作:

npm install lodash

接着在一个 JS 文件里使用:

const _ = require('lodash');

let arr = [1, 2, 3, 4];
let res = _.chunk(arr, 2); // 每两个一组拆分
console.log(res); // [[1,2], [3,4]]

有了 NPM,你可以几乎不需要重复造轮子。


🔧 实战项目:用 Node.js 搭建一个简单的网页服务器

我们来动手做一个小型“Hello World”网页服务器吧!

步骤一:创建一个新文件夹作为项目根目录

比如:mkdir node-project && cd node-project

步骤二:创建 server.js

// 导入 http 模块
const http = require('http');

// 创建服务器
const server = http.createServer((req, res) => {
    // 设置响应头:告诉浏览器这是一个 HTML 页面
    res.writeHead(200, { 'Content-Type': 'text/html' });

    // 发送 HTML 响应
    res.end('<h1>Hello, 这是我的第一个Node.js服务器!</h1>');
});

// 监听端口 3000,并启动服务
server.listen(3000, () => {
    console.log('服务器运行在 http://localhost:3000');
});

步骤三:运行服务器

终端输入:

node server.js

看到输出:

服务器运行在 http://localhost:3000

然后打开浏览器访问:

👉 http://localhost:3000

你就会看到熟悉的问候语啦!


❓常见问题解答

移动端适配方案-1

Q1:Node.js 是不是比 PHP 更好?

A:这没有标准答案。PHP 在后端领域也有强大生态,Node.js 的优势在于统一前后端语言、异步性能强,适合实时通信类应用。

Q2:我写的代码为什么执行不了?

A:确保:

  • 文件名拼写正确
  • 终端路径正确(cd 到文件所在目录)
  • Node 是否已安装,检查方法见前面步骤

Q3:可以用 ES6 的 import 替代 require 吗?

A:可以!但需要把文件保存为 .mjs 扩展名或在 package.json 中设置 "type": "module"。初学阶段建议还是用 require()

Q4:Node.js 怎么调试?

A:推荐使用 VS Code 的调试插件。点击运行与调试侧边栏,添加配置即可一步步调试。


📚 学习建议:下一步怎么学?

恭喜你已经完成了第一个 Node.js 教程!接下来你可以按照以下路线继续深入:

学习路线图:

  1. 掌握 Express 框架:更强大易用的 Web 开发框架
  2. 连接数据库(MongoDB/MySQL)
  3. 学会使用模板引擎(如 EJS/Pug)
  4. 尝试用 Node.js 搭建 RESTful API
  5. 部署你的网站到线上服务器(如 Heroku、Vercel)

推荐学习资源:


🎉 结语:你已经是 Node.js 新手啦!

通过本篇文章,你已经学会了如何安装 Node.js、理解核心概念、写出第一个服务器程序,还了解了常见的问题解决方法。

🚀 小技巧:多写多试是学编程最好的办法。哪怕只是修改一行代码去观察变化,那都是进步!

如果你喜欢这篇文章,请点赞分享给其他想入门的朋友,我们一起成长!


作者简介:一位热爱教学的前端讲师,专注帮助每一个新人走上编程之路。

评论 0

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