3. Node.js 环境搭建:安装 Node.js、npm 包管理、项目初始化、ES6 模块化基础
好,咱们正式开始动手了。信令服务器说白了就是一个跑在服务器上的 Node.js 程序。所以第一步,先把 Node.js 环境搭好。这部分内容不难,但细节挺多。我当年第一次搭环境时,就踩过不少坑,今天一并给你讲清楚。
3.1 安装 Node.js 与 npm
Node.js 是一个 JavaScript 运行时环境。它让 JS 能跑在服务器上。npm 是它的包管理器,用来下载第三方库。
安装方式有两种:
- 官网下载安装包:去
nodejs.org下载 LTS 版本。LTS 是长期支持版,稳定。我建议你选这个。 - 使用 nvm 管理版本:nvm 是 Node Version Manager。它允许你安装多个 Node.js 版本,随时切换。我个人习惯用 nvm,因为项目多了,版本要求不一样。
验证安装是否成功:
node --version
npm --version
如果输出版本号,说明安装成功。比如 v18.16.0 和 9.5.1。
小提示:Windows 用户安装完记得重启终端。macOS 用户如果遇到权限问题,试试用 sudo 安装 nvm。
3.2 npm 包管理基础
npm 是 Node.js 自带的包管理工具。你想想看,如果没有 npm,每次写代码都得自己造轮子,那得多累。npm 让我们能直接使用别人写好的模块。
常用命令:
| 命令 | 作用 |
|---|---|
npm init |
初始化项目,生成 package.json |
npm install <包名> |
安装依赖包 |
npm install -g <包名> |
全局安装(不推荐滥用) |
npm uninstall <包名> |
卸载依赖包 |
npm update |
更新依赖包 |
注意:千万不要用 sudo npm install -g 全局安装包。我曾经因为权限问题搞崩过系统环境。后来改用 npx 或者本地安装,再也没出过问题。
3.3 项目初始化
初始化项目很简单。打开终端,进入你的工作目录,然后执行:
mkdir webrtc-signaling-server
cd webrtc-signaling-server
npm init -y
-y 参数表示使用默认配置。执行完后,目录下会生成一个 package.json 文件。这个文件是项目的“身份证”,记录了项目名称、版本、依赖等信息。
package.json 长这样:
{
"name": "webrtc-signaling-server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
嗯,这里要注意。默认的 main 字段是 index.js。如果你打算用 ES6 模块,后面需要改一下 type 字段。
3.4 ES6 模块化基础
ES6 模块化是 JavaScript 官方的模块标准。它用 import 和 export 关键字来管理代码。相比老旧的 CommonJS(require),ES6 模块更现代、更安全。
启用 ES6 模块:
在 package.json 中添加一行:
"type": "module"
这样 Node.js 就会把 .js 文件当作 ES6 模块来处理。
导出模块:
// utils.js
export function add(a, b) {
return a + b;
}
export const PI = 3.14159;
导入模块:
// main.js
import { add, PI } from './utils.js';
console.log(add(2, 3)); // 5
console.log(PI); // 3.14159
避坑指南:我曾经在导入时忘记写文件扩展名 .js,结果 Node.js 报错找不到模块。记住,ES6 模块下,导入本地文件必须带扩展名。
默认导出 vs 命名导出:
| 导出方式 | 语法 | 导入方式 |
|---|---|---|
| 命名导出 | export const a = 1 |
import { a } from '...' |
| 默认导出 | export default function() {} |
import myFunc from '...' |
我个人习惯用命名导出。因为默认导出在重命名时容易搞混。你想想看,一个模块里只能有一个默认导出,但命名导出可以有多个,更灵活。
3.5 本章知识体系
下面这张图帮你梳理了本章的核心逻辑。从环境安装到模块化,每一步都是后续开发的基础。
个人经验:我刚开始学 Node.js 时,总觉得模块化是小事。直到项目大了,代码乱成一锅粥,才后悔没早点用 ES6 模块。模块化不只是语法,更是一种工程思维。把功能拆成小模块,每个模块只做一件事,代码才好维护。
好了,环境搭好了,模块化也懂了。下一章咱们就开始写真正的信令服务器代码。到时候你会看到,这些基础操作有多重要。