运行时与模块
这节要解决什么
搞清楚:Node 怎么执行一个文件、模块怎么互相引用、命令行参数和环境变量从哪来。
先用大白话
浏览器里,JS 的「宿主」是浏览器(有 window、document)。
Node 里,宿主换成了服务器/本机进程(有 process、能读写文件、能开网络端口)。
模块就是「把代码拆成多个文件,互相 import」。
前端打包工具帮你拼;在 Node 里,运行时自己就能加载模块。
可以把它想成 Vue 的单文件组件互相 import:一个文件导出,另一个文件导入。
对着项目看
重点文件:
package.json里的"type": "module"→ 告诉 Node 用 ESMsrc/main.js→ 程序入口,解析命令行src/notes.js→ 真正读写笔记的逻辑
试跑:
cd projects/01-node-cli-notes
npm start
# 或
node src/main.js list
node src/main.js add "第一天学 Node"
node src/main.js listprocess.argv 里装的就是你在命令行敲的参数。
process.env 里是环境变量(后面接数据库、密钥都会用到)。
两个容易混的点
- CommonJS vs ESM
- 老写法:
require/module.exports - 新写法:
import/export(本资料默认这个)
- 老写法:
node:前缀
import fs from 'node:fs'和import fs from 'fs'都能用;带前缀更明确「这是 Node 内置」。
验收清单
- 能用
node 某文件.js跑起来 - 知道
process.argv是命令行参数 - 能说清项目里哪个文件是入口、哪个是业务逻辑
下一节 → 02-异步与事件循环.md