学习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 来实现前后端分离的联调。

相关推荐
源力祁老师3 小时前
Odoo 19 制造与会计集成深度解析
前端·javascript·制造
iFlow_AI3 小时前
iFlow CLI Hooks 「从入门到实战」应用指南
开发语言·前端·javascript·人工智能·ai·iflow·iflow cli
漂流瓶jz3 小时前
SourceMap数据生成核心原理:简化字段与Base64VLQ编码
前端·javascript·算法
桜吹雪3 小时前
手搓一个简易Agent
前端·人工智能·后端
诸葛老刘4 小时前
前端 css中的函数
前端·css
谢尔登4 小时前
通用会话控制方案
前端·网络协议·tcp/ip·react.js·gitlab
惜茶4 小时前
websocket操作入门
前端·javascript·websocket
摇滚侠5 小时前
Vue 项目实战《尚医通》,获取当前账户就诊人信息并展示出来,笔记42
前端·javascript·vue.js·笔记·html5
han_5 小时前
前端高频面试题之Vue-router篇
前端·vue.js·面试