如果你正准备踏入 Vue 的世界,恭喜你选对了方向!Vue 是目前最受欢迎的前端框架之一,以其简洁优雅的语法、强大的响应式系统和极佳的开发体验 ,深受开发者喜爱。而今天我们要一起做的,就是亲手搭建一个标准的 Vue3 项目,并深入理解它背后的"现代前端工程化"思想。
别担心,这篇文章专为 零基础或刚入门的小白设计 ,我会用轻松欢快但不失专业的语言,带你一步步走进 Vue3 的世界,搞懂 Vite、Vue Router、index.html、main.js 等核心文件之间的关系,并告诉你------为什么现在的前端开发这么快、这么爽!
🚀 第一步:创建你的第一个 Vue3 项目
我们使用的工具是 Vite ------ 一个由 Vue 作者尤雨溪(Evan You)亲自打造的现代前端构建工具。它的口号是:"极速冷启动 + 极速热更新 = 开发幸福感爆棚!"
1. 使用命令初始化项目
打开终端,输入以下命令:
bash
npm init vite
这会引导你完成项目的初始化过程:
- 输入项目名称(比如
my-vue-app) - 选择框架:
Vue - 选择变体:
JavaScript或TypeScript(新手建议选 JS)
完成后进入项目目录并安装依赖:
bash
cd my-vue-app
npm install
然后启动开发服务器:
bash
npm run dev
几秒钟后,你会看到类似这样的输出:
arduino
VITE v4.x.x ready in 200ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
浏览器自动打开,显示 Vite 的欢迎页面 👏 ------ 恭喜你,项目跑起来了!
✅ 小贴士:Vite 能做到"秒开",是因为它利用了浏览器原生支持的 ES Module (ESM)。传统打包工具如 Webpack 需要先打包整个应用才能运行,而 Vite 只在需要时动态加载模块,所以"冷启动"特别快!
🧱 第二步:认识项目结构 ------ 优秀架构长什么样?
Vite 帮我们生成了一个非常标准且现代化的项目模板,这就是所谓的"工程化脚手架"。让我们来看看这个"家"里都有哪些重要成员:
css
my-vue-app/
├── index.html ← 入口 HTML 文件
├── package.json ← 项目配置 & 依赖管理
├── public/ ← 静态资源(不会被处理)
├── src/
│ ├── App.vue ← 根组件
│ ├── main.js ← 应用入口 JS
│ ├── components/ ← 可复用组件目录
│ └── views/ ← 页面级组件目录(待添加)
├── vite.config.js ← Vite 配置文件(可选)
└── ...
是不是看起来井井有条?这种清晰的分层结构正是现代前端工程化的体现:分工明确、职责单一、易于维护。
接下来,我们重点剖析三个核心文件:index.html、main.js 和 App.vue。
🔗 第三步:打通任督二脉 ------ index.html、main.js、App.vue 如何协作?
📄 1. index.html:一切的起点
这是整个应用的"门面",也是浏览器最先加载的文件。虽然它看起来只是一个普通的 HTML,但它承载着至关重要的使命。
html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>all-vue</title>
</head>
<body>
<!-- 组件的挂载点 -->
<div id="app"></div>
<!-- 构建工作,前端界面开发的分水岭
Vue 很快,因为基于最新的 ESM(type="module")
只需要解析需要的文件,如果其他那就要解析更多文件,慢 -->
<script type="module" src="/src/main.js"></script>
</body>
</html>
🔍 关键点解析:
<div id="app">:这是 Vue 应用的"容器",所有组件最终都会渲染到这里。<script type="module">:使用了原生 ES 模块机制,意味着浏览器可以直接 import/export JS 模块,无需预先打包。src="/src/main.js":告诉浏览器,"去执行/src/main.js这个模块"。
💡 为什么快?
因为 Vite 在开发环境下不进行完整打包,而是通过 HTTP Server 提供按需编译服务。当你访问 /src/main.js 时,Vite 才实时将其转换为浏览器可执行的代码。这就像是"按需点餐",而不是"提前做好一整桌菜"。
⚙️ 2. main.js:应用的启动引擎
这是 Vue 应用的"心脏",负责创建实例、注册插件、挂载根组件。
javascript
// vue createApp 创建一个App
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 引入路由模块
import router from './router'
// 现代前端应用
// 组件化,响应式....
// 跟DOM编程say byebye
createApp(App)
.use(router) // 启用路由
.mount('#app') // 挂载在 #app 上
🔍 逐行详解:
| 行数 | 说明 |
|---|---|
import { createApp } from 'vue' |
导入 Vue 提供的 createApp 工厂函数,用于创建应用实例 |
import App from './App.vue' |
加载根组件 App.vue |
createApp(App) |
创建一个 Vue 应用实例,传入根组件 |
.use(router) |
安装 Vue Router 插件,启用路由功能 |
.mount('#app') |
将应用挂载到 DOM 中的 #app 元素上 |
🎯 划重点: .use() 是 Vue 插件系统的入口。你可以用它来集成 Vuex(状态管理)、Pinia、UI库等。只要一个 .use(),就能让整个应用拥有新能力!
💖 3. App.vue:根组件,全家福舞台
.vue 文件是一种特殊的单文件组件(Single File Component, SFC),将模板、逻辑、样式封装在一起。
vue
<script></script>
<template>
<div>
<header>
<nav>
<ul>
<!-- app.use(router)之后 vue-router 带给我们的全局组件 -->
<li><Router-link to="/">Home</Router-link></li>
<li><Router-link to="/about">About</Router-link></li>
</ul>
</nav>
</header>
<main>
<!-- 多个页面的占位符 -->
<router-view></router-view>
</main>
<footer></footer>
</div>
</template>
<style scoped>
</style>
🔍 三大块解析:
✅ <template>:视图模板
- 写的是 HTML-like 结构,但支持 Vue 指令(如
v-if,v-for)。 <Router-link>是 Vue Router 提供的声明式导航组件,点击不会刷新页面,而是通过 JS 改变 URL 并切换视图。<router-view>是一个"插座",用来动态插入当前匹配的页面组件(比如 Home 或 About)。
✅ <script>:业务逻辑
- 目前为空,后续可以写数据、方法、生命周期钩子等。
- 注意:在 Vue3 中推荐使用
<script setup>语法糖,更简洁。
✅ <style scoped>:局部样式
scoped表示这些 CSS 只作用于当前组件,避免全局污染。- 编译后,Vite 会自动给元素添加唯一属性(如
data-v-f3f3eg9)实现样式隔离。
🛣️ 第四步:多页面导航 ------ 使用 Vue Router 实现 SPA
现在我们的 App 只是一个静态页面。如何让它变成"多页应用"?答案是:前端路由(Frontend Routing)。
Vue 官方提供了 vue-router 来实现这一功能,让你无需刷新页面就能切换内容,打造真正的 SPA(Single Page Application)。
1. 安装 Vue Router
bash
npm install vue-router@4
注:Vue3 对应的是 vue-router v4,不要装错版本哦!
2. 创建路由配置文件:src/router/index.js
javascript
// router 模块 定义路由
// https://juejin.cn/post/7046222222402390046
import {
createRouter, // 创建前端路由实例
createWebHashHistory // 定义路由模式
} from 'vue-router'
import Home from '../views/Home.vue';
import About from '../views/About.vue';
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: About
}
];
// 实例化,负责前端路由
const router = createRouter({
history: createWebHashHistory(), // 使用 hash 模式:#/about
routes // 路由映射表
});
export default router;
🔍 核心概念讲解:
| 概念 | 解释 |
|---|---|
createRouter() |
创建路由实例的核心函数 |
createWebHashHistory() |
使用 URL 的 hash 部分(即 # 后的内容)来管理路由。例如:http://localhost:5173/#/about。 优点:不需要服务器配置,适合静态部署。 |
routes 数组 |
定义路径与组件的映射关系。每个对象包含 path、name、component。 |
router-view |
动态出口,根据当前 URL 自动渲染对应的组件。 |
Router-link |
替代原生 <a> 标签,实现无刷新跳转。 |
🎯 Hash vs History 模式对比:
| 模式 | 示例 URL | 是否需要后端配合 | SEO 友好度 |
|---|---|---|---|
Hash (#) |
example.com/#/about |
❌ 不需要 | ⚠️ 较差 |
| History | example.com/about |
✅ 需要重定向配置 | ✅ 更好 |
新手推荐先用 Hash 模式,简单稳定,上线即用!
3. 创建页面组件:src/views/Home.vue 和 About.vue
vue
<!-- src/views/Home.vue -->
<template>
<div>Home</div>
</template>
vue
<!-- src/views/About.vue -->
<template>
<div>About</div>
</template>
👉 把它们放进 views/ 目录,表示这是"页面级"组件,区别于 components/ 中的通用小组件(如按钮、弹窗等)。
🔁 第五步:热更新 ------ 修改即生效的魔法
还记得我们运行 npm run dev 后打开的页面吗?
现在试着修改一下 Home.vue 的内容:
vue
<template>
<div>Welcome to My First Vue App! 🎉</div>
</template>
保存文件......看!浏览器瞬间刷新了!✨
这就是 Vite 的 Hot Module Replacement (HMR),也就是"热更新"。
✅ 它有多强?
- 修改
.vue文件 → 组件局部更新,状态保留 - 修改
.css→ 样式即时生效,无需刷新 - 修改
.js→ 模块热替换,提升调试效率
再也不用手动 Ctrl+R 刷新啦!简直是开发者福音 ❤️
🛠️ 第六步:提升开发体验 ------ 必备工具推荐
1. Volar:VS Code 官方插件
Volar 是 Vue 团队推出的 VS Code 插件,取代旧版 Vetur,专为 Vue3 设计。
✅ 功能包括:
- ✅ 智能提示(IntelliSense)
- ✅ 语法高亮
- ✅ 错误检查
- ✅ TypeScript 支持
- ✅
<script setup>语法支持
📌 安装方法:在 VS Code 扩展商店搜索 "Volar" 并安装即可。
⚠️ 注意:如果你之前装过 Vetur,请禁用它,避免冲突!
2. Vue Devtools:Chrome 浏览器调试神器
Vue Devtools 是专为 Vue 应用设计的浏览器扩展,让你可以:
- 查看组件树结构
- 监听事件和 props
- 调试响应式数据
- 时间旅行调试(搭配 Pinia/Vuex)
📌 安装方法:Chrome 商店搜索 "Vue Devtools" 安装,重启浏览器即可使用。
🤔 总结回顾:Vue 项目是如何运作的?
让我们再梳理一遍整个流程,把碎片知识串联成体系:
-
用户访问
index.html- 浏览器加载 HTML
- 发现
<script type="module" src="/src/main.js"> - 向 Vite Server 请求该模块
-
Vite 处理模块请求
- 实时编译
.vue文件为 JavaScript - 返回给浏览器执行
- 实时编译
-
main.js执行createApp(App)创建 Vue 实例.use(router)注册路由插件.mount('#app')挂载到 DOM
-
App.vue渲染- 显示导航菜单
<Router-link> <router-view>等待插入页面
- 显示导航菜单
-
用户点击"About"链接
- URL 变为
#/about - Vue Router 匹配路由规则
- 将
About.vue渲染进<router-view>
- URL 变为
-
任意文件修改
- Vite 监听到变化
- 触发热更新(HMR)
- 浏览器局部刷新,用户体验丝滑
🎯 一句话总结:
Vite 是现代前端工程化的基石,Vue 是构建用户界面的利器,Vue Router 让单页应用变得灵活,三者协同工作,打造出高效、快速、可维护的前端项目。
🎉 结语:你已经迈出了最重要的一步!
看到这里,你已经不再是"只会写 HTML 的小白"了。你掌握了:
- 如何使用 Vite 快速搭建 Vue3 项目
- 理解了
index.html、main.js、App.vue的协作机制 - 学会了用
vue-router实现多页面导航 - 了解了热更新、组件化、工程化等现代前端核心理念
前端的世界很大,Vue 只是其中一扇门。愿你在探索的路上,始终保持好奇与热情!
🎉 最后送你一句尤雨溪的话共勉:
"The best way to learn is to build. "
(最好的学习方式,就是去创造。)