VUE目录结构详解

发布于:2025-07-20 ⋅ 阅读:(15) ⋅ 点赞:(0)

 VUE的优势:单页应用 和 工程化

什么是单页应用?

  • SPA:整个应用只有一个 HTML 页面,所有的内容通过 JS 动态加载和渲染。

  • 路由切换不会重新加载页面,而是动态切换不同组件和视图。

  • 用户体验更流畅,接近桌面应用。

人话:就是 只有一个 app.vue 页面,剩下的都是组件,就是pages里面的内容,它点击任何页面,标签页都不会转圈圈重新刷新,就动态变化页面上的元素。

什么是工程化?

工程化就是让 Vue 项目有标准化的目录结构、规范的代码、自动化的构建和测试流程,团队协作更顺畅,项目易维护且更具扩展性。

AAAAA      // 项目根目录
├── node_modules/          // 依赖包目录(npm install 后自动生成)
├── public/                // 公共静态资源,编译后原样复制到 dist,比如 index.html、favicon.ico 等
├── src/                   // 源码目录,核心开发代码都在这里
│   ├── api/               // 封装所有 API 请求方法,如 axios 封装、接口配置
│   ├── assets/            // 静态资源,如图片、样式、字体
│   ├── components/        // 公共组件,如按钮、弹窗、播放器(FlvPlayer.vue)等
│   ├── pages/             // 页面级组件,每个页面一个.vue,通常和路由一一对应
│   ├── plugins/           // 插件注册目录(如:axios、element-ui、echarts等第三方库)
│   ├── store/             // Vuex 状态管理目录(或是 Pinia),存储应用级共享状态
│   ├── utils/             // 工具类函数封装,比如时间格式化、深拷贝、防抖节流等
│   └── App.vue            // 根组件,是所有页面的入口组件
├── main.js                // 入口 JS 文件,创建 Vue 实例并挂载 App.vue,注册 router、store
├── router.js              // 路由配置,定义页面跳转规则
├── .gitignore             // Git 忽略文件,列出不需要提交到版本库的文件/目录
├── babel.config.js        // Babel 配置文件,用于将高级 JavaScript 语法转换为兼容性代码
├── package.json           // 项目依赖和脚本配置的清单,也是 npm 管理的核心文件(相当于maven中pom)
├── README.md              // 项目说明文档(Markdown 格式)
├── vue.config.js          // Vue CLI 的项目配置文件,比如 devServer 设置、路径别名、代理等(相当于Spring中 的application.yml)
└── yarn.lock              // yarn 包管理器生成的锁定依赖版本的文件(与 package-lock.json 类似)
 

 babel.config.js:是babel的配置,babel是一个降级的,我给你举个例子,就是javascript他有很多版本。比如2025最新的版本,他可能有一些很新的API,这些API在很多浏览器都不支持,但是很多用户用的还是老版本的浏览器,这个时候就要用babel来处理,他相当于用老版本的代码在应用层实现了新版的API,所以你开发的时候可以用2025最新的语法,实际编译之后,babel会给他变成等价的老版本代码

gitignore:提交GIT仓库的时候哪些文件需要忽略

api:用于请求后端接口

assets:用于存在静态资源,图片,样式,字体等

components: 用于存放公共组件,如按钮、弹窗、播放器等

pages:页面级组件,就是一个页面,每一个 .vue,通常和路由一一对应

plugins: 插件,如axios、element-ui,echarts等

store:用于存放状态,vuex或者pinia,共享状态

utils: 工具类函数封装,如时间格式化,深拷贝,防抖节流等

App.vue:根组件,就是这一个页面,是所有页面的入口组件

mian.js : 入口js文件,创建vue实力并挂载APP.vue ,注册router、store

router.js : 路由配置,定义页面跳转规则

.gitignore : git忽略文件,列出不需要提交的git上的文件、目录

package.json : 项目依赖和脚本配置的清单,相当于 Maven的pom

readme.md : 说明文档

vue.config.js : vue cli 的项目配置文件,相当于 Spring的 application

yarn.lock : 包管理器生成的锁定依赖版本的文件(与 package-lock.json 类似)

一、整体调用顺序和依赖关系

main.js(启动应用)
   ↓
router.js(路由匹配)
   ↓
页面组件(pages/)或子组件(components/)
   ↓
store(Vuex)分发 action
   ↓
api(接口请求封装)
   ↓
后端接口(服务器)
   ↑
响应数据返回
   ↑
api 返回数据给 store
   ↑
store 更新 state
   ↑
页面组件从 state 读取数据并渲染视图

二、详细说明

阶段 具体调用关系 说明
1. 项目启动 浏览器打开项目,main.js 创建 Vue 实例,挂载路由和状态管理 这是程序启动的入口,只执行一次
2. 路由匹配 用户访问某个路径,router.js 根据路径加载对应页面组件 路由控制哪个页面显示,且通常触发数据请求
3. 页面组件加载 页面组件的生命周期钩子(如 onMounted)调用 store.dispatch 发起数据请求 组件主动“调用” Vuex 里的 action,告诉它去拿数据
4. Vuex 处理 Vuex action 通过调用 api 中封装的接口请求方法发起异步请求 Vuex 负责调用 api,隔离组件与网络请求细节
5. 接口请求 api 里调用 axios 等工具发起 HTTP 请求到后端服务器 实际发起网络请求,拿到服务器数据
6. 服务器响应 后端返回数据给 apiapi 返回 Promise 的数据给 Vuex 数据经过 axios 返回,传递给 Vuex
7. 状态更新 Vuex action 通过 commit 触发 mutation 修改状态数据 状态变化后,Vue 会自动通知依赖该数据的组件
8. 组件渲染 组件通过 computed 读取 store.state,页面更新视图 视图和数据绑定自动刷新,完成展示


三、调用链总结(谁调用谁)

  • main.js 负责启动,调用 .use(router), .use(store)

  • router.js 监听 URL,加载对应页面组件

  • 页面组件 调用 store.dispatch 请求数据

  • store.actions 调用 api 中接口请求函数

  • api 调用 axios 发起 HTTP 请求

  • 服务器 返回数据给 api

  • api 返回 Promise 结果给 store.actions

  • store.mutations 通过 commit 更新状态

  • 页面组件 监听状态变化,重新渲染视图


网站公告

今日签到

点亮在社区的每一天
去签到