总目标(今天学完你应该做到)
一句话总结 :
👉 用 Node.js 跑起来第一个程序。
第一阶段 Node.js 是什么?
核心一句话:
Node.js = 用 JavaScript 写后端 + 事件驱动 + 单线程高并发
关键理解(今天重点):
-
Node 不是"只能前端"
-
Node 特别适合:
-
API
-
Agent
-
IO 密集型(网络、文件、数据库)第二阶段
-
IO是什么
标准读法
I/O 念:
"艾 / 欧"
英文:eye oh
字母一个一个念,不连读。
一句话先给结论
I/O = 程序和"外部世界"打交道的所有操作
只要不是纯 CPU 在算的,几乎都是 I/O。
I/O 是哪两个字?
I / O = Input / Output
-
Input:从外面拿数据
-
Output:往外面给数据
在 Node / 后端里,哪些算 I/O?(重点)
✅ 常见 I/O(你每天都会用)
| 场景 | 算不算 I/O | 例子 |
|---|---|---|
| 读文件 | ✅ | fs.readFile |
| 写文件 | ✅ | fs.writeFile |
| HTTP 请求 | ✅ | 调接口 |
| 数据库查询 | ✅ | SQL / Mongo |
| 访问 Redis | ✅ | GET key |
| 读环境变量 | ✅ | process.env |
👉 一句话:只要"要等",就是 I/O
❌ 不是 I/O(纯 CPU)
javascript
for (let i = 0; i < 1e9; i++) {}
-
不等外部
-
只占 CPU
-
这叫 计算
那为什么 I/O 会"慢"?
因为 I/O 要找 外部资源:
-
硬盘(机械 / SSD)
-
网络(跨机器)
-
数据库(磁盘 + 网络)
-
第三方 API(互联网)
Node 为什么特别在意 I/O?
因为 Node 的设计目标就是:
在"等 I/O 的时间里",继续处理别的请求
所以它:
-
不傻等
-
不阻塞
-
用回调 / Promise / async
最后一行大白话(你可以直接记)
I/O 就是:
程序向外要数据 / 给数据,
慢、要等、但可以不阻塞。
第二阶段 安装 & 验证 Node.js
1.确认是否安装node
打开终端 / CMD / PowerShell:
bash
node -v
npm -v
看到版本号就 OK。
如果没装:
去官网 👉 https://nodejs.org
选 LTS 版本(像选 .NET LTS 一样)
2.写你的第一个 Node 程序
新建一个文件夹 文件夹内 新建一个文件 index.js 添加内容
javascript
// index.js
console.log("Hello Node.js");
在文件夹的路径上 回车 cmd
bash
node index.js
即可看到 Hello Node.js
第三阶段 理解 Node 的"程序入口 & 模块"
Node 没有 Main(),而是:
-
文件就是入口
-
从上往下执行
需要记住的:
-
require= 引用模块 -
module.exports= 对外暴露
创建两个文件:
math.js
javascript
function add(a, b) {
return a + b;
}
module.exports = {
add
};
index.js
javascript
const math = require("./math");
console.log(math.add(1, 2));
运行:
bash
node index.js
第四阶段 Node 的核心优势:非阻塞(感受一下)
index.js
javascript
console.log("start");
setTimeout(() => {
console.log("async task");
}, 1000);
console.log("end");
输出顺序:
start
end
async task
🧠 记住一句话就行:
Node 不会等慢操作执行完才往下走
小作业
新建一个 user.js:
javascript
function getUser() {
return {
id: 1,
name: "Tom"
};
}
module.exports = { getUser };
👉 在 index.js 里调用并打印
index.js
javascript
const user = require('./user');
console.log(user.getUser().name);
console.log(user.getUser().age);