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 项目显示在网页上,正式运行!
超简版总结(记这个就够)
- 导入创建工具
- 导入根组件
- 导入路由
- 创建 Vue 项目
- 安装路由
- 挂载到网页 → 运行成功
用生活比喻帮你记住
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.html ← src/main.js ← App.vue ← router ← views/页面
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 → 工具方法