在前端项目里,Node.js 通常不是直接跑在用户浏览器里的东西,它更多是充当:
前端项目的"开发环境 + 构建工具运行环境 + 包管理基础设施"。
1.写代码时:node.js帮我们启动项目
1.1 本地开发服务器:npm run dev
bash
npm run dev
node.js帮我们在本地开了一个"开发用的小服务器",
2.开发时:node.js帮我们热更新和代理接口
2.1 编译和转换代码
"开发版代码",Node.js 工具帮你加工成"浏览器能看懂的代码
比如我们写的vue,浏览器其实不认识 .vue 文件:
javascript
<template>
<div>{{ name }}</div>
</template>
<script setup>
const name = "张三"
</script>
比如我们写的typeScript,浏览器不能直接完整理解 TypeScript 类型:
TypeScript
const age: number = 18
比如我们写的scss,浏览器不能直接运行 SCSS:
css
.container {
.title {
color: red;
}
}
要 Node.js 工具帮我们转换:
javascript
.vue → JavaScript
.ts → JavaScript
.scss → CSS
jsx → JavaScript
Node.js转换时所需要的工具:
javascript
Vite
Webpack
Babel
TypeScript
PostCSS
Sass
node.js是代码编译器/转换器的运行环境
2.2 代理后端接口
前端开发时,经常配置代理:
javascript
// vite.config.js
export default {
server: {
proxy: {
"/api": {
target: "http://backend.example.com",
changeOrigin: true
}
}
}
}
我们的前端请求:
javascript
fetch("/api/user")
实际会被本地的Node.js开发服务器转发到:
javascript
http://backend.example.com/api/user
开发环境下,Node.js 帮前端把请求转发给后端,避免跨域问题。node.js充当本地接口代理服务器
2.3 执行脚本任务
很多前端项目会有一些脚本,例如:
javascript
{
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint src",
"format": "prettier --write src",
"preview": "vite preview"
}
}
例如执行:
bash
npm run lint
nodejs就是前端项目的自动化执行器。
vite、webpack、eslint、prettier 这些工具,很多都是用 Node.js 写的,nodejs就像一个工具运行平台
3.装依赖时:node.js帮我们下载包
3.1 npm /pnpm/yarn 都是依赖node.js
前端项目通常有:
bash
{
"dependencies": {
"vue": "^3.4.0",
"axios": "^1.6.0"
},
"devDependencies": {
"vite": "^5.0.0",
"eslint": "^8.0.0"
}
}
这些依赖要通过包管理器安装
bash
npm install
包管理器本身就是 Node.js 生态的一部分,
项目需要 Vue、React、Axios、Element Plus、Ant Design、Vite,这些包都要靠 Node.js 生态下载安装到本地。
Node.js是依赖包管理环境
4.打包时:node.js帮我们编译压缩
4.1 node.js打包项目
上线前一般会执行:
bash
npm run build
这个命令通常会生成:
bash
dist/
├── index.html
├── assets/
│ ├── index.xxx.js
│ ├── index.xxx.css
│ └── logo.xxx.png
这个过程 Node.js 工具会帮我们做:
bash
1. 压缩 JS
2. 压缩 CSS
3. 合并文件
4. Tree Shaking 去掉没用代码
5. 给文件名加 hash
6. 拆分 chunk
7. 处理图片、字体等静态资源
Node.js 帮我们把项目从"开发状态"打包成"上线状态"
注意:打包完成后的 dist 文件,一般可以直接丢到 Nginx、CDN、对象存储上,不一定还需要 Node.js 运行。