Node.js 简介
Node.js 是一个基于 ChromeV8 引擎的 JavaScript 运行时环境,可以使 JavaScript 运行在服务器端。使用 Node.js,可以方便地开发服务器端应用程序,如 Web 应用、API、后端服务,还可以通过 Node.js 构建命令行工具等。
相比于传统的服务器端语言(如 PHP、Java、Python 等),Node.js 具有以下特点:
- 单线程,但是采用了事件驱动、异步 1/O 模型,可以处理高并发请求;
- 轻量级,使用 C++编写的 V8 引擎让 Node.js 的运行速度很快;
- 模块化,Node.js 内置了大量模块,同时也可以通过第三方模块扩展功能;
- 跨平台,可以在 Windows、Linux、Mac 等多种平台下运行;
Node.js 的核心是其管理事件和异步 I/O 的能力。Node.js 的异步 l/O 使其能够处理大量并发请求,并且能够避免在等待 I/O 资源时造成的阻塞。此外,Node.js 还拥有高性能网络库和文件系统库,可用于搭建 WebSocket 服务器、上传文件等。在 Node.js 中,我们可以使用 JavaScript 来编写服务器端程序,这也使得前端开发人员可以利用自己已经熟悉的技能来开发服务器端程序,同时也让 JavaScript 成为一种全栈语言。Node.js 受到了广泛的应用,包括了大型企业级应用、云计算、物联网、游戏开发等领域。常用的 Node.js 框架包括 Express、Koa、Egg.js 等,它们能够显著提高开发效率和代码质量。
Node.js 安装及使用
官方文档:Node.js — 让 JavaScript 无处不在 - Node.js 运行环境
安装
######### 默认仓库安装 可能版本较低
# 安装 Node.js
sudo apt install nodejs
# 安装 npm(Node.js 包管理器)
sudo apt install npm
######## 使用 Apt 使用 NodeSource PPA 安装 Node.js
######## 使用 nvm(Node Version Manager)安装 适合需要管理多个 Node.js 版本的开发者。
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
# Download and install Node.js:
nvm install 24
# Verify the Node.js version:
node -v # Should print "v24.13.0".
# Verify npm version:
npm -v # Should print "11.6.2".
# 卸载 nvm
rm -rf ~/.nvm
# 删除 .~/.bash_profile, and ~/.profile. 的 nvm相关内容
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# 使环境文件生效
source ~/.<your_shell_profile_file>
# 重启终端后测试
nvm --version
node -v
npm -v使用
# 定义 app.js 文件并编写代码
# 使用node运行
node app.js包管理器 NPM
NPM 全称 Node Package Manager,是 Node.js 包管理工具,是全球最大的模块生态系统,里面所有的模块都是开源免费的;也是 Node.js 的包管理工具,相当于后端的 Maven 的部分功能。
安装 Nodejs,通常也会自动安装 npm 包管理工具
npm 安装依赖包时默认使用官方源,若要切换源,如阿里镜像源,执行以下命令:
npm config registry https://registry.npmmirror.com
npm config get registyr # 查看配置全局依赖的下载存储位置:
npm config prefix "D:/GlobalNodeModules"
npm config get prefix升级 npm
npm -v
npm install -g npm@9.6.6
npm -v常见命令
| 命令 | 说明 |
|---|---|
npm init | 初始化一个新的 package.json 文件,交互式输入信息。进入一个文件夹中,执行 npminit 命令后,npm 会引导您在命令行界面上回答一些问题,例如项目名称、版本号、作者、许可证等信息,并最终生成一个 package.json 文件。package.json 信息会包含项基本信息!类似 maven 的 pom.xml。 |
npm init -y | 快速创建带有默认设置的 package.json 文件。 |
npm install package-name@version | 当前目录安装指定包。(存储在当前项目的 node_modules 文件夹中) |
npm install -g package-name@version | 全局安装指定包,使其在系统范围内可用。(存储在 prefix 配置的文件夹中) |
npm install | 安装 package.json 中列出的所有依赖。 |
npm install package-name --save-dev | 安装包并添加到 devDependencies。 |
npm update package-name | 更新指定的依赖包。 |
npm uninstall package-name | 卸载指定的依赖包。 |
npm uninstall -g package-name | 全局卸载指定的包。 |
npm list | 查看当前项目的已安装依赖包列表。 |
npm list -g --depth=0 | 查看全局已安装的依赖包列表(不展开依赖树)。 |
npm info package-name | 查看包的详细信息,包括版本和依赖等。 |
npm login | 登录到 NPM 账号。 |
npm publish | 发布当前包到 NPM 注册表。 |
npm unpublish package-name | 从 NPM 注册表中撤销发布的包(一般限 24 小时内)。 |
npm cache clean --force | 清理 NPM 缓存。 |
npm audit | 检查项目依赖中的安全漏洞。 |
npm audit fix | 自动修复已知的漏洞。 |
npm run script-name | 运行 package.json 中定义的脚本,例如 npm run start。 |
npm start | 运行 start 脚本(等同于 npm run start)。 |
npm test | 运行 test 脚本。 |
npm build | 运行 build 脚本。 |
npm outdated | 列出项目中有可更新版本的依赖包。 |
npm version patch/minor/major | 更新 package.json 中的版本号,自动更新版本。 |
npm ci | 使用 package-lock.json 快速安装依赖,适用于 CI/CD 环境。 |
本地安装与全局安装的区别
| 特性 | 本地安装 | 全局安装 |
|---|---|---|
| 安装范围 | 仅在当前项目中可用 | 在系统的全局环境中可用 |
| 命令使用 | npm install package-name | npm install -g package-name |
| 安装位置 | node_modules 目录 | 系统全局目录(依 OS 而异) |
| 使用场景 | 项目依赖(库、框架) | CLI 工具、项目生成器 |
| 访问方式 | 通过 require() 或 import 使用 | 在命令行中直接使用 |
| 依赖声明 | 在 package.json 中记录 | 不在 package.json 中记录 |
| 版本控制 | 不同项目中可用不同版本 | 系统中只保留一个版本 |
| 权限问题 | 无需特殊权限 | 可能需要管理员权限 |
package.json 是 Node.js 项目中的一个核心文件,包含了项目的元数据、依赖、脚本等信息。
npm 脚本是一组在 package.json 文件中的 scripts 字段定义的可执行命令,通过 npm run <脚本名> 执行。npm 脚本可用于启动应用程序,运行测试,生成文档等,还可以自定义命令以及配置需要运行的脚本。
{
"name": "my-project", // 项目的名称,通常是小写字母和连字符。
"version": "1.0.0", // 项目的版本号,遵循 语义化版本规范 (SemVer)。
"description": "A simple Node.js project", // 项目的简短描述。
"main": "app.js", // 项目的入口文件,默认为 index.js。
"scripts": { // 定义项目可执行的脚本命令,如 npm start。
"start": "node app.js",
"test": "echo \"Error: no test specified\" && exit 1"
"build": "webpack"
},
"dependencies": { // 项目运行时需要的依赖库,会在安装(npm install)时加入 node_modules,或是 npm install <module> 时在这里记录
"express": "^4.17.1"
},
"devDependencies": { // 开发时使用的依赖库,不会在生产环境中安装。
"nodemon": "^2.0.20"
},
"keywords": ["node", "npm", "example"], // 关键字数组,有助于描述项目并在 NPM 搜索中找到项目。
"author": "Your Name", // 项目的作者信息。
"license": "MIT" // 项目的许可证类型,如 MIT、ISC。
}scripts 对象包含 start、test 和 build 三个脚本。当您运行 npm run start 时,将运行 node index.js,并启动应用程序。同样,运 npm run test 时,将运 Jest 测试套件,而 npm run build 将运 webpack 命令以生成最终的构建输出。
总之,npm run 命令为您提供了一种在 package.json 文件中定义和管理一组指令的方法,可以在项目中快速且灵活地运行各种操作。
常见命令行工具
Node 进程管理:PM2 - 主页 - PM2 进程管理器
# 安装
npm install pm2@latest -g
# 启动应用程序
pm2 start app.js
pm2 start server/index.mjs --name tintin-blog
# 管理应用程序
pm2 restart app_name
pm2 reload app_name
pm2 stop app_name
pm2 delete app_name
# 查看应用程序
pm2 [list|ls|status]
# 查看应用程序日志
pm2 logs
# 打开仪表盘
pm2 monit字体子集提取:aui/font-spider: Smart webfont compression and format conversion tool
npm install font-spider -g
# 第一步:在 html 中引入字体
# 第二部:提取字体子集
font-spider [options] <htmlFile1 htmlFile2 ...>
font-spider dist/*.html