Vue3启动流程和文件结构

main.ts

cpp 复制代码
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

const app = createApp(App)
app.use(router)
app.mount('#app')

这是Vue 3 项目的入口文件(main.js),是整个项目启动的起点。

先给你一句总概括:
这段代码的作用:创建 Vue 应用 → 安装路由 → 挂载到页面上,让项目跑起来。


逐行详细解释

javascript 复制代码
// 1. 从 Vue 中导入创建应用的方法
import { createApp } from 'vue'
  • import = 导入
  • { createApp } = Vue3 提供的创建应用实例的函数
  • from 'vue' = 从 Vue 这个库里面拿
  • 意思:我要开始创建一个 Vue 项目了!

javascript 复制代码
// 2. 导入根组件 App.vue
import App from './App.vue'
  • App.vue整个项目的根组件
  • 所有页面最终都会被它包裹
  • 意思:把项目的"根外壳"拿过来

javascript 复制代码
// 3. 导入路由(负责页面跳转 / 切换页面)
import router from './router'
  • router = 路由
  • 作用:控制页面切换(比如从首页 → 详情页)
  • 意思:把页面跳转功能引进来

javascript 复制代码
// 4. 创建一个 Vue 应用实例
const app = createApp(App)
  • createApp(App) = 用根组件创建一个 Vue 应用
  • app = 你的整个 Vue 项目本身
  • 意思:项目正式创建完成!

javascript 复制代码
// 5. 给项目安装路由功能
app.use(router)
  • app.use() = Vue 安装插件的固定写法
  • 这里安装的是 router(路由)
  • 意思:让项目支持页面跳转

javascript 复制代码
// 6. 把 Vue 项目挂载到页面上
app.mount('#app')
  • mount = 挂载(把项目渲染到网页上)
  • #app = 对应 public/index.html 里的 <div id="app"></div>
  • 意思:让 Vue 项目显示在网页上,正式运行!

超简版总结(记这个就够)

  1. 导入创建工具
  2. 导入根组件
  3. 导入路由
  4. 创建 Vue 项目
  5. 安装路由
  6. 挂载到网页 → 运行成功

用生活比喻帮你记住

  • createApp = 买房子
  • App.vue = 房子的主体结构
  • router = 房子里的门(可以去不同房间)
  • app.use(router) = 把门装上
  • app.mount('#app') = 把房子放到地皮上,住人

总结

  • 这是Vue3 项目的启动入口
  • 核心逻辑:创建 → 安装插件 → 挂载运行
  • 所有项目的 main.js 基本都长这样,固定写法

画一张极简、超清晰、一看就懂的 Vue3 入口流程流程图:

text 复制代码
┌─────────────────────────────────────────────────────────┐
│                   main.js 执行流程                       │
└─────────────────────────────────────────────────────────┘

1. 从 vue 库导入  →  createApp(创建应用的方法)
          ↓
2. 导入根组件     →  App.vue(整个应用的根)
          ↓
3. 导入路由插件   →  router(页面跳转功能)
          ↓
4. 创建应用实例   →  const app = createApp(App)
          ↓
5. 安装路由       →  app.use(router)
          ↓
6. 挂载到页面     →  app.mount('#app')
          ↓
┌─────────────────────────────────────────────────────────┐
│               Vue 应用正式启动、渲染页面                 │
└─────────────────────────────────────────────────────────┘

再配一张结构关系图(更直观)

text 复制代码
public/index.html
   ↓
<div id="app"></div>  👈 挂载点
          ↑
          │
main.js ──┘
  ↓
createApp(App.vue)    👈 根组件
  ↓
use(router)           👈 插件
  ↓
整个 Vue 应用运行

一句话记住

导入 → 创建 → 装插件 → 挂载到页面 → 跑起来

极简、清晰、能直接看懂Vue3 项目整体架构图,结构一目了然:

text 复制代码
┌─────────────────────────────────────────────────────────────┐
│                    Vue3 项目整体架构图                       │
└─────────────────────────────────────────────────────────────┘

                             浏览器页面
                                   ↑
                                   │
              ┌───────────────────────────────────┐
              │      public/index.html            │
              │  <div id="app"></div> 【挂载点】   │
              └───────────────────┬───────────────┘
                                  │
                                  ▼
┌─────────────────────────────────────────────────────────────┐
│                     main.js 【入口文件】                    │
│  1. import { createApp } from 'vue'                        │
│  2. import App from './App.vue'                             │
│  3. import router from './router'                           │
│  4. const app = createApp(App)                              │
│  5. app.use(router)                                         │
│  6. app.mount('#app')                                       │
└───────────────────────────┬─────────────────────────────────┘
                            │
                            ▼
              ┌───────────────────────────┐
              │       App.vue 【根组件】  │
              │  <router-view /> 路由出口 │
              └───────────┬───────────────┘
                          │
                          ▼
        ┌───────────────────────────────────┐
        │             router                │
        │      路由配置:页面跳转规则        │
        │  / → Home.vue   /about → About.vue│
        └───────────┬───────────────────────┘
                    │
                    ▼
    ┌───────────────┴───────────────┬───────────────────┐
    ▼                               ▼                   ▼
Home.vue【首页】               About.vue【关于页】   ...其他页面
    │                               │
    ▼                               ▼
组件(Header、Footer、List...)  组件、样式、逻辑

一句话总结整个架构:

index.html(挂载点) ← main.js(入口) ← App.vue(根) ← router(路由) ← 各个页面组件

最标准、最清晰、直接对应前面架构的 Vue3 项目目录结构图,一看就懂:

text 复制代码
📁 你的Vue项目根目录
├─ 📁 public/            # 静态资源(不参与打包)
│  └─ index.html         # 页面入口 → 里面有 <div id="app">
│
├─ 📁 src/               # 核心源码(99% 工作都在这)
│  ├─ main.js            # 项目入口:创建App、挂载、use插件
│  ├─ App.vue            # 根组件:所有页面的父容器
│  │
│  ├─ 📁 router/         # 路由
│  │  └─ index.js        # 路由配置:path → 页面组件
│  │
│  ├─ 📁 views/          # 页面组件
│  │  ├─ Home.vue
│  │  └─ About.vue
│  │
│  ├─ 📁 components/     # 公共组件(按钮、卡片、头部等)
│  │  ├─ Header.vue
│  │  └─ Footer.vue
│  │
│  ├─ 📁 assets/         # 图片、样式、字体等资源
│  └─ 📁 stores/         # Pinia/Vuex 状态管理(可选)
│
├─ package.json          # 依赖、脚本命令
└─ vite.config.js / vue.config.js  # 构建配置

对应前面的架构,一句话串起来:

public/index.htmlsrc/main.jsApp.vuerouterviews/页面


1. 📁 public/

作用:放「不参与打包、直接原封不动丢到网站根目录」的静态文件

里面有什么

  • index.html → 整个网页的壳
  • 图片、图标、第三方静态脚本

什么时候用

  • 网站图标 favicon.ico
  • 必须放在根目录的文件
  • 不想被 Webpack / Vite 编译压缩的资源

怎么用

直接写路径:

html 复制代码
<img src="/logo.png">

2. 📁 src/

项目 99% 代码都在这里,是你的工作区


2.1 src/main.js

项目入口文件

干什么

  • 创建 Vue 实例
  • 注册路由、Pinia、UI库
  • 挂载到 #app

什么时候用

  • 加插件(router、element-plus、axios...)
  • 全局配置

2.2 src/App.vue

根组件

干什么

  • 放整个项目共用结构:<router-view>、Header、Footer

什么时候用

  • 写全局布局
  • 放路由出口

3. 📁 src/router/

路由:控制页面跳转

里面一般是 index.js

干什么

  • 配置:路径 → 对应页面
js 复制代码
import Home from '@/views/Home.vue'
routes = [
  { path: '/', component: Home }
]

什么时候用

  • 新增页面
  • 修改页面地址
  • 做权限控制

4. 📁 src/views/

页面组件(一个.vue = 一个页面)

什么时候用

  • 首页、详情页、个人中心...

命名

Home.vue、User.vue、Detail.vue


5. 📁 src/components/

公共小组件:多个页面会重复使用

例子

  • Button.vue
  • Header.vue
  • Card.vue
  • Table.vue

什么时候用

  • 多个页面用到同一个东西
  • 为了复用、简化代码

6. 📁 src/assets/

图片、样式、字体、音视频等资源

什么时候用

  • 页面里用到的图片
  • 全局 CSS / SCSS
  • 字体文件

怎么用

vue 复制代码
<img src="@/assets/logo.png">

7. 📁 src/stores/

状态管理 Pinia(全局数据共享)

什么时候用

  • 用户信息
  • 购物车
  • 全局主题、语言
  • 多个页面要共用的数据

8. 📁 src/api/

接口请求(axios)

干什么

  • 统一管理后端接口
  • 便于维护
js 复制代码
// api/user.js
export function getUserInfo() {
  return axios.get('/user/info')
}

9. 📁 src/utils/

工具函数

放什么

  • 时间格式化
  • 防抖、节流
  • 通用小方法

10. 根目录文件(简单知道就行)

  • package.json → 依赖、启动命令
  • vite.config.js / vue.config.js → 项目配置
  • .gitignore → git 忽略文件

超简记忆口诀

  • public → 网站外壳、根目录静态文件
  • src → 你写代码的地方
  • main.js → 项目入口
  • App.vue → 根组件
  • router → 管页面跳转
  • views → 放页面
  • components → 放复用小组件
  • assets → 图片样式
  • stores → 全局数据
  • api → 后端接口
  • utils → 工具方法

相关推荐
独自破碎E2 小时前
Spring Boot + Vue 前后端联调踩坑记录
vue.js·spring boot·后端
榴莲omega2 小时前
第11天:函数组合、记忆化与定时器
开发语言·前端·javascript
小江的记录本2 小时前
【Docker】《 Docker 高频常用命令速查表 》
java·前端·后端·http·docker·容器·eureka
Beginner x_u2 小时前
前端八股整理|Vue|虚拟 DOM、Diff 与 Patch 流程
前端·javascript·vue.js
kaixiang3002 小时前
若依RuoYi实战
java·服务器·前端
NocoBase2 小时前
为 Excel 数据快速构建 Web 应用:4 种方法对比
前端·人工智能·低代码·开源·excel
一 乐2 小时前
智能农田管理|基于springboot + vue智能农田管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·智能农田管理系统
苏瞳儿2 小时前
数据库的增删改查-node.js
前端·javascript·数据库
阿正的梦工坊2 小时前
pnpm和npm前端包管理工具有什么不同?
前端·npm·node.js