Vite和HTTP 服务器

目录

[💻 常见的 HTTP 服务器软件](#💻 常见的 HTTP 服务器软件)

[1. Vite 的核心:一个内置的开发服务器 🏗️](#1. Vite 的核心:一个内置的开发服务器 🏗️)

[2. 为什么说它是"定制化"的?🚀](#2. 为什么说它是“定制化”的?🚀)

[3. Vite 服务器的工作流程 🔄](#3. Vite 服务器的工作流程 🔄)

[4. 还有一个"隐形"的服务器:WebSocket 📡](#4. 还有一个“隐形”的服务器:WebSocket 📡)

[5. 代理服务器:解决跨域 🔄](#5. 代理服务器:解决跨域 🔄)

[📌 总结](#📌 总结)


💻 常见的 HTTP 服务器软件

  • Nginx:高性能的 Web 服务器和反向代理服务器,以其高并发处理能力和稳定性而闻名。
  • Apache HTTP Server:老牌的、功能强大的 Web 服务器,模块化设计,应用非常广泛。
  • Node.js :JavaScript 运行时,可以使用内置的 http 模块或 Express 等框架轻松创建 HTTP 服务器。
  • IIS:微软开发的 Web 服务器,通常运行在 Windows 系统上。

Vite 本质上就是一个针对现代前端开发高度定制化的 HTTP 服务器

以下是 Vite 与 HTTP 服务器之间关系的详细解读:

1. Vite 的核心:一个内置的开发服务器 🏗️

当你运行 vitenpm run dev 命令时,Vite 做的第一件事就是在你的本机(localhost)启动一个 HTTP 服务器

  • 底层架构 :这个服务器在底层利用了 Node.js 的能力。早期版本主要基于 Koa(一个轻量级的 Node.js Web 框架),而新版本则更多使用 Connect 或原生 Node.js 模块来构建中间件系统。
  • 主要职责 :它负责监听指定的端口(默认通常是 51733000),接收浏览器的请求,并返回相应的资源。

2. 为什么说它是"定制化"的?🚀

普通的 HTTP 服务器(如 Nginx)只是简单地把文件从硬盘读取出来发给浏览器。而 Vite 的服务器是一个**"智能"编译服务器**。

Vite 的服务器利用了浏览器原生支持 ES 模块的特性,改变了传统的"打包"逻辑:

表格

传统 Webpack 服务器 Vite 服务器
先打包,再启动:启动前需将所有代码打包成 bundle,项目大时很慢。 不打包,按需编译:启动时只启动服务器,浏览器请求什么,服务器就编译什么。
静态文件服务:提供的是打包好的最终文件。 动态编译服务 :提供的是实时转换后的模块(如将 .vue.ts 实时编译成 JS)。

3. Vite 服务器的工作流程 🔄

当你的浏览器访问 http://localhost:5173 时,Vite 服务器内部发生了什么?

  1. 请求 HTML :浏览器请求 index.html,服务器直接返回文件。
  2. 解析模块 :HTML 中包含 <script type="module" src="/src/main.js">,浏览器自动发起对 main.js 的请求。
  3. 拦截与转换 :Vite 服务器拦截这个请求。
    • 如果是 普通 JS:直接返回。
    • 如果是 TypeScript / Vue / JSX:服务器在内存中实时将其编译成浏览器可识别的 JavaScript,然后返回。
    • 如果是 依赖包 :Vite 会先进行"依赖预构建",利用 esbuild(一种极快的打包器)将 node_modules 中的库转换为 ESM 格式,然后通过 HTTP 提供给浏览器。

4. 还有一个"隐形"的服务器:WebSocket 📡

除了处理网页内容的 HTTP 服务器 ,Vite 在启动开发服务器时还会建立一个 WebSocket 服务器

  • 作用:建立浏览器与开发服务器之间的双向通信通道。
  • 场景:当你修改了一个文件并保存时,Vite 服务器通过 WebSocket 通知浏览器:"文件变了,请重新加载这个模块"。
  • 结果 :这就是热更新的原理,它不需要刷新整个页面,而是只替换变化的模块。

5. 代理服务器:解决跨域 🔄

在开发中,前端和后端通常运行在不同的端口(如前端 5173,后端 3000),这会导致跨域问题

Vite 的 HTTP 服务器内置了代理功能(Proxy):

  • 原理 :你在 vite.config.js 中配置代理规则。当浏览器请求 /api/user 时,Vite 服务器会作为"中间人",将这个请求转发给后端服务器(如 http://localhost:3000/api/user),拿到数据后再转给浏览器。
  • 效果:浏览器认为自己是在和同源服务器通信,从而绕过了跨域限制。

📌 总结

Vite 就是 HTTP 服务器,但不仅仅是 HTTP 服务器。

  • 对于浏览器:它是一个标准的 HTTP 服务器,提供网页、脚本和样式。
  • 对于开发者 :它是一个即时编译器热更新中心

正是因为它利用了现代浏览器的 ESM 特性,并结合了内存中快速编译(esbuild)和 WebSocket 通信,才使得它的启动速度和热更新速度远超传统的基于打包的构建工具。

相关推荐
Jony_17 小时前
高可用移动网络连接
网络协议
Sinclair19 小时前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
chilix1 天前
Linux 跨网段路由转发配置
网络协议
Rockbean2 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
茶杯梦轩2 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
海天鹰3 天前
【免费】PHP主机=域名+解析+主机
服务器
不是二师兄的八戒3 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
芝士雪豹只抽瑞克五3 天前
Nginx 高性能Web服务器笔记
服务器·nginx
gihigo19983 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
失重外太空啦3 天前
Tomcat
java·服务器·tomcat