1. 核心思想:从"多页"到"单页"与"组件化"
- 传统 H5+JS :每个页面对应一个
.html文件,用<script>加载 JS,用 jQuery 操作 DOM。这种方式在页面逻辑复杂后,代码会变得难以维护。 - 现代前端 (SPA - 单页应用) :我们只有一个
index.html文件。所有"页面"的切换,都是通过 JavaScript 动态地在这个唯一的 HTML 文件里更换内容,而不是浏览器跳转。这样做响应更快,体验更像一个桌面应用。 - 组件化:我们会把界面拆分成一个个可复用的"组件"(比如导航栏、按钮、弹窗)。每个组件都有自己的 HTML 结构、JS 逻辑和 CSS 样式。这样代码复用性强,且逻辑隔离,非常容易维护。
2. 项目结构与文件用途(类比后端概念)
把整个项目想象成一个需要"编译"和"运行"的服务。
├── .gitignore # Git 忽略文件,类似后端项目里的 .gitignore
├── package.json # 【核心】项目定义文件,类似 Maven 的 pom.xml 或 Gradle 的 build.gradle
├── package-lock.json # 锁定依赖版本,确保所有人安装的库版本一致,防止"我这里好好的"
├── node_modules/ # 存放所有依赖库的目录,类似 .m2/repository 或 target/lib。此目录不提交
├── index.html # 【入口】整个应用的"外壳",是浏览器加载的第一个文件
├── vite.config.ts # 【构建与开发配置】非常重要,类似 Spring Boot 的 application.yml
├── src/ # 【源码目录】所有业务逻辑和界面代码都在这里
└── public/ # 纯静态资源目录,这里的文件会被直接复制,不参与构建
3. 几个关键文件的详细说明
package.json - 项目的身份证
这是 Node.js 项目的清单文件。后端同事需要关注两个地方:
"dependencies"和"devDependencies":项目的依赖库。前者是生产环境需要的(如vue),后者是开发时才用的(如typescript、vite)。相当于pom.xml里的<dependencies>。"scripts":定义了一些快捷命令。相当于Makefile或者pom.xml里的plugin目标。npm run dev: 启动开发服务器。前端开发时主要用这个命令,它会启动一个带热更新的本地 Web 服务器。npm run build: 打包项目 。执行这个命令会把所有src下的源码"编译"成浏览器能直接运行的静态 HTML, JS, CSS 文件,并输出到dist目录(默认)。这个dist目录就是最终要交给你们部署的产物。npm run preview: 在本地预览打包后的dist产物效果。
vite.config.ts - 开发服务器与构建配置
这是前端构建工具 Vite 的配置文件。这是后端同事最需要关注的文件,特别是用于接口联调。
-
server.proxy:解决开发时的跨域问题 。前端开发服务器(比如在http://localhost:5173)直接请求你的后端接口(比如http://localhost:8080/api)会遇到浏览器跨域限制。通过配置代理,我们可以让前端的请求先发给 Vite 开发服务器,再由它转发给后端,从而绕开跨域。示例: 假设你的后端接口是
http://localhost:8080/api/users,可以这样配置:typescript// vite.config.ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ plugins: [vue()], server: { proxy: { // 字符串简写写法 // '/api': 'http://localhost:8080' // 选项写法,更灵活 '/api': { target: 'http://localhost:8080', // 目标后端服务地址 changeOrigin: true, // 必须设置为 true,否则后端会识别出是代理请求 rewrite: (path) => path.replace(/^\/api/, '') // 可选:如果后端接口本身不带 /api 前缀,可以重写路径 } } } })配置后,前端代码里可以直接请求
/api/users,Vite 会自动把它转发到http://localhost:8080/users。
src/ - 核心代码目录
main.ts: 整个前端应用的启动入口 。它会加载根组件App.vue,并"挂载"到index.html里的<div id="app"></div>上。全局的库(如路由、状态管理)也在这里初始化。App.vue: 根组件,所有页面内容的容器。.vue文件 (单文件组件) : 这是 Vue 的特色。它把一个组件的 HTML (<template>), JS (<script>), CSS (<style>) 写在同一个文件里,实现了高度的内聚和复用。你可以把它理解成一个自包含的、可复用的 UI 模块。components/: 存放可复用的小组件,比如Button.vue,Dialog.vue。assets/: 存放会被 Vite 处理的静态资源,比如图片、CSS 文件。Vite 会对它们进行优化和打包。
4. 开发与部署流程
-
前端开发:
- 我在本地运行
npm install安装所有依赖。 - 然后运行
npm run dev,启动一个开发服务器(如http://localhost:5173)。 - 我在这个环境下编写代码,Vite 会提供热更新,我一保存代码,浏览器里的页面就自动刷新,开发效率很高。
- 当需要调用后端接口时,我会通过
vite.config.ts里配置的代理来请求你的接口。
- 我在本地运行
-
联调与测试:
- 我们需要约定好 API 接口的路径和数据格式。
- 你在本地启动后端服务。
- 我配置好
vite.config.ts的代理指向你的服务地址。 - 我在前端页面上进行操作,触发网络请求,验证整个流程。
-
部署:
- 开发完成后,我会运行
npm run build命令。 - 这会在项目根目录下生成一个
dist文件夹。里面是纯静态的 HTML, JS, CSS 文件和图片等资源。 - 你只需要将这个
dist目录下的所有文件,部署到你的 Web 服务器(如 Nginx, Tomcat)的静态资源目录下即可。 - 注意 :因为是单页应用,需要配置你的服务器,对于所有未匹配到静态文件的请求(比如用户直接访问
http://yourdomain.com/user/profile),都返回dist/index.html的内容。否则用户一刷新页面就会 404。Nginx 里通常用try_files $uri $uri/ /index.html;来实现。
- 开发完成后,我会运行
希望这份说明能帮助你理解这个项目。简单来说,你可以把前端项目看成一个独立的、需要"编译"的服务,它"编译"后的产物 (dist 目录) 才是需要你来部署的最终成品。在开发阶段,我们通过 proxy 来实现前后端分离的联调。