学习vue第三天 Vue 前端项目结构的说明

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),后者是开发时才用的(如 typescriptvite)。相当于 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. 开发与部署流程
  1. 前端开发

    • 我在本地运行 npm install 安装所有依赖。
    • 然后运行 npm run dev,启动一个开发服务器(如 http://localhost:5173)。
    • 我在这个环境下编写代码,Vite 会提供热更新,我一保存代码,浏览器里的页面就自动刷新,开发效率很高。
    • 当需要调用后端接口时,我会通过 vite.config.ts 里配置的代理来请求你的接口。
  2. 联调与测试

    • 我们需要约定好 API 接口的路径和数据格式。
    • 你在本地启动后端服务。
    • 我配置好 vite.config.ts 的代理指向你的服务地址。
    • 我在前端页面上进行操作,触发网络请求,验证整个流程。
  3. 部署

    • 开发完成后,我会运行 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 来实现前后端分离的联调。

相关推荐
AndyGoWei8 分钟前
pnpm 是什么,看这篇文章就够了
前端·javascript
zl0_00_016 分钟前
isctf2025 部分wp
linux·前端·javascript
西洼工作室16 分钟前
移动开发常见问题
前端·css3·web移动开发
菜鸟‍17 分钟前
【论文学习】SAMed-2: 选择性记忆增强的医学任意分割模型
人工智能·学习·算法
weixin_4093831218 分钟前
简单四方向a*寻路学习记录2 先做个数组地图 在cocos编辑器模式上运行出格子 计算角色世界坐标跟数组地图的联系
学习·编辑器·cocos
一过菜只因22 分钟前
MySql学习(2)
数据库·学习·mysql
同学8079626 分钟前
新版本Chrome谷歌浏览器访问本地网络请求跨域无法正常请求
前端·http
儿歌八万首26 分钟前
Jetpack Compose 实战:打造高性能轮播图 (Carousel) 组件
android·前端·kotlin
m0_6161884929 分钟前
循环多个表单进行表单校验
前端·vue.js·elementui
灰灰勇闯IT32 分钟前
虚拟机性能优化实战:从基础调优到深度压榨性能
开发语言·学习·性能优化·虚拟机