chapter1 初识node.js
为什么会有node.js
在早期的js开发时,开发者们往往需要在浏览器环境下对js进行调试与开发,这样的情况开发十分受限于浏览器。于是,在这样的情况下,2009年,Ryan Dahl(Node.js 创始人)基于 Chrome 的 V8 引擎开发了 Node.js,旨在增强js的灵活性,在这之后,js可以被应用于各种不同的开发场景:游戏引擎、桌面端exe开发、脚本开发....灵活性大大提升。
node.js是什么?他可以用来做什么?
通俗的讲,node.js是一个js 运行时的环境,用于帮助开发者们在无浏览器的情况下运行与调试js程序,它基于著名的浏览器v8引擎开发,并提供了一些浏览器不具备的功能(I/O,网络通信.....),使得开发者们不必局限于浏览器,提供了更强大的js能力,因此发展出了强大的js开发者生态。
node.js可以用于游戏的开发(早期的unity,godot,游戏后端服务器.....)、全栈应用的搭建(express/koa/fastity)、脚本开发(auto.js)、工具开发等等。
node.js的安装与使用
通过官方提供安装包安装
通过node.js的一些版本控制工具安装
如果需要多版本的node开发(有些依赖库版本的支持不一样,如比较经典的编译包node-gyp),则可以使用node的版本管理工具来进行指定版本的安装与管理,这里我们介绍比较常用的nvm.
nvm(node.js version management)是一个专用于node的版本管理工具,旨在解决node.js因版本不同而引起的依赖冲突问题。
nvm安装
nvm是一个开源项目,直接通过github获取最新的发行版本即可:
https://nodejs.org/zh-cn
安装后的验证
通过运行下述命令可以确保你的nvm是否安装成功:
nvm version
镜像配置
在安装node时,如果你没有对应的代理,下载会默认从默认源拉取,这样下载会非常缓慢,因此,我们需要配置国内镜像源:
首先获取安装路径:
nvm root
在输出的路径下找到setting.text(这个文件是配置文件,用于配置下载源),添加内容:
node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/
安装node
做好以上工作后,就可以进行node的安装了,首先输入以下命令查看可安装的版本:
nvm list available
选择你需要安装的版本,输入以下命令安装:
nvm install 版本号
启用nvm安装的node
在安装完成后,我们还需要启用node(因为我们可能需要安装多个node):
nvm use 版本号
node -v
npm -v
//查看node与npm对应版本
如果不确定自己安装了哪些版本,可以使用nvm list来列出所安装的node:
nvm list
卸载对应版本的node
如果你不需要某个版本的node,也可以将其删除:
nvm uninstall 版本号
npm
在传统的前端开发中,我们往往需要通过link与script来引入大量的js包,这些包有些需要下载并存放到对应目录,这样的开发繁琐并且存在项目依赖库的问题。为了便于管理,我们可以使用npm进行一系列依赖的管理,达到同python的pip一样的随用随取。
npm镜像源配置
npm默认从npm市场的源拉取,当没有代理时,它的下载速度是非常慢的,为了加速下载,我们可以通过配置镜像源来进行加速:
npm get registry
//查看当前源
npm config set registry https://registry.npmmirror.com/
//设置淘宝源
npm config set registry https://mirrors.cloud.tencent.com/npm/
//设置腾讯源
npm config set registry https://r.cnpmjs.org/
//验证是否设置成功
npm get registry
有时候可能会出现源的ssl证书过期问题,如果出现此问题可以暂时关闭ssl验证:
npm config set strict-ssl false
npm相关配置文件一览
package.json
npm最重要的配置文件,用于规定项目的名称、依赖、版本等一系列说明,下面举一个json来说明:
{
"name": "test-project",
"version": "1.0.0",
"description": "一个示例项目,演示如何在 package.json 中管理依赖",
"scripts": {
"dev": "vite",
"build": "vite build",
"serve": "vite preview",
"lint": "eslint \"src/**/*.{js,vue}\" --fix"
},
"dependencies": {
"axios": "^1.3.6", // HTTP 客户端
"lodash": "^4.17.21", // 工具库
"dayjs": "^1.11.9" // 日期处理
},
"devDependencies": {
"vite": "^4.3.9", // 构建工具
"eslint": "^8.33.0" // 代码检查
}
}
我们来逐步拆解,首先是顶部部分:
{
"name": "test-project",//项目名,一般用于npm install 项目名来安装项目中所有使用的依赖,项目名一般可以省略,在常规开发中,一般直接使用npm install来安装项目依赖
"version": "1.0.0",//版本号
"description": "一个示例项目,演示如何在 package.json 中管理依赖",//描述文本
}
接着是scripts部分:
"scripts": {//scripts用于定义一些自定义的命令使用npm run +定义的名称,一般由构建工具提供,如npm run dev
"dev": "vite",//指定npm run dev所使用的工具
"build": "vite build",//指定npm run build所使用的工具
"serve": "vite preview",//指定npm run serve所使用的工具
"lint": "eslint \"src/**/*.{js,vue}\" --fix"//指定npm run lint所使用的工具
},
"""
名词解释:
dev:开发服务器
build:项目编译
serve:预览服务器
lint:一般是eslint,用于对配置的文件类型进行语法检查,并修复一些能够修复的问题
"""
最后是底部部分:
"dependencies": {
"axios": "^1.3.6", // HTTP 客户端
"lodash": "^4.17.21", // 工具库
"dayjs": "^1.11.9" // 日期处理
},
"devDependencies": {
"vite": "^4.3.9", // 构建工具
"eslint": "^8.33.0" // 代码检查
}
//"dependencies":生产环境依赖
// "devDependencies"::开发环境依赖,在进行编译打包时不会被打包进去
需要注意的是:这些内容一般是由你所使用的脚手架来生成的,如果没有使用脚手架,则需要自行编写自定义命令。
package-lock.json
这个配置文件用于指定实际所安装的依赖版本与安装源等数据,与package的结构完全一致,但package所指定的是理想的依赖版本,而lock是实际安装的依赖版本:
✅ 常用 npm 配置文件对比表
| 配置文件名 | 作用说明 | 是否必须 | 是否自动生成 | 是否手动维护 | 常见位置 |
|---|---|---|---|---|---|
package.json |
项目最核心的配置文件,定义项目名称、版本、依赖、脚本等 | ✅ 必须 | ❌ 否(需要手动 npm init) |
✅ 是 | 项目根目录 |
package-lock.json |
锁定依赖的具体版本,保证团队/机器安装的依赖完全一致 | ⚠ 推荐 | ✅ 是(npm install 自动生成) |
❌ 否(一般不修改) | 项目根目录 |
.npmrc |
npm 客户端配置文件,可设置代理、源、缓存目录、认证信息等 | ❌ 可选 | ❌ 否 | ✅ 是 | 项目根目录或全局 ~/.npmrc |
node_modules/ |
安装的所有依赖模块的存放目录,npm install 后生成 | ✅ 必需(运行时) | ✅ 是 | ❌ 否(自动管理) | 项目根目录 |
简要说明:
- ✅
package.json:必须存在,项目的“身份证”和“说明书”,定义依赖、脚本、入口等。 - 🔐
package-lock.json:自动生成的“锁文件”,保证依赖一致性。 - ⚙️
.npmrc:可定制的 npm 客户端配置文件,比如设置淘宝源registry=https://registry.npmmirror.com。 - 📦
node_modules/:npm 安装的依赖包存放的目录,一般不手动修改,通常也不上传到 Git。

浙公网安备 33010602011771号