2026-04-08

你好!欢迎来到 Vue 的世界。从你的项目结构来看,你使用的是现代的 Vue 3 + Vite 构建的项目,并且已经包含了路由 (vue-router)。

你现在正在 src/components/Home.vue 文件中,这是一个非常好的起点!作为新手,建议你按照以下步骤循序渐进地开发:

第一步:跑起你的项目并实时预览

在写代码之前,确保你能实时看到修改的效果。打开 VS Code 的终端 (Terminal),在你的 my-vue-app 目录下运行:

npm install  # 如果你还没有安装依赖的话
npm run dev  # 启动本地开发环境

然后在浏览器中打开它提示的本地地址(通常是 http://localhost:5173)。

第二步:熟悉 Vue 组件的三大块

在你当前打开的 src/components/Home.vue 中,尝试编写最基础的结构。Vue 的文件主要分为三部分,你可以直接在文件里测试以下代码:

<template>
  <!-- 1. 这里写 HTML 结构 -->
  <div class="home-container">
    <h1>我的第一个 Vue 页面</h1>
    <p>当前点击次数: {{ count }}</p>
    <button @click="addCount">点我加1</button>
  </div>
</template>

<script setup>
// 2. 这里写 JavaScript 逻辑代码
import { ref } from 'vue'

// 定义一个响应式变量(数据变了,页面会自动更新)
const count = ref(0)

// 定义一个普通的方法
const addCount = () => {
  count.value++
}
</script>

<style scoped>
/* 3. 这里写 CSS 样式。scoped 表示这里的样式只在当前组件生效,不会污染全局 */
.home-container {
  text-align: center;
  padding: 20px;
}
button {
  padding: 8px 16px;
  background-color: #42b983;
  color: white;
  border: none;
  border-radius: 4px;
}
</style>

练习: 保存文件后,去浏览器看看是不是页面已经更新了?点一下按钮试试。

第三步:理解应用是如何串联的

熟悉了单页面开发后,你可以去看看项目是怎么把页面连起来的:

  1. 入口逻辑:去看看 src/main.js,这是整个项目启动的地方。
  2. 全局骨架:去看看 src/App.vue。这里通常放全站通用的东西(比如顶部导航栏),里面会有一个 <router-view /> 标签,它的作用就是根据当前的网址,替换显示对应的页面(比如首页就显示 Home.vue)。
  3. 页面路由:去看看 src/router/index.js。这里配置了网址和组件的对应关系,比如告诉程序:“当访问 / 时,展示 Home 组件”。

第四步:给自己布置一个小任务

当你把上面的内容看懂后,可以尝试独立完成这个任务:

  1. src/components/ 目录下新建一个 About.vue(关于我们页面),随便写点内容。
  2. 去 src/router/index.js 中把这个新页面配置上去(比如路径叫 /about)。
  3. 去 src/App.vue 中加两个可以点击跳转的菜单链接:
    <router-link to="/">首页</router-link> | 
    <router-link to="/about">关于</router-link>
    

你可以先从修改 Home.vue 里的文字和样式开始,随便玩!遇到不知道怎么写的功能(比如:怎么渲染一个列表、起名报错了怎么办),随时发代码问我。

<div v-if="loading">正在拼命加载中...</div>

loading.value = false 之后,为什么立即就关掉了,原理是什么?

这正是 Vue 最核心、最强大的魅力所在,也就是大家常说的 “响应式系统(Reactivity System)”

在传统的开发方式(比如原生 JavaScript 或 jQuery)中,如果数据变了,你需要手动去写代码操作网页元素,比如 document.getElementById('loading').style.display = 'none'

但在 Vue 中,你不需要手动操作网页元素,它的原理可以分为三个步骤来理解:

1. ref 的魔法包装(数据劫持)

当你写下:

const loading = ref(true)

Vue 并不是简单地存了一个 trueref 就像是一个带监控的快递盒子。你把 true 放进盒子里,以后你每次读写盒子里面的东西(通过 .value),Vue 都能立刻察觉到:“哦!有人修改了 loading 的值!”。

2. 建立牵绊(收集依赖)

在你的 HTML 模板中,你写了这样的代码:

<div v-if="loading">正在拼命加载中...</div>
<div v-else>...</div>

当 Vue 第一次把页面画出来时,它发现这里用到了 loading 变量。Vue 的内部笔记会默默记下一笔:“这个 v-if 的显示隐藏,和 loading 这个盒子绑定了。只要盒子里的值变了,我就要回来重新处理这块 HTML。”

3. 自动触发更新(响应变化)

1.5 秒后,定时器触发了:

loading.value = false

这时候发生了什么?

  1. 你把盒子里的值改为了 false
  2. 盒子的“监控警报”立刻响起,通知 Vue 的系统。
  3. Vue 翻开之前的笔记,发现 v-if 依赖于 loading
  4. Vue 瞬间在底层做计算:现在 loadingfalse 了,所以 v-if="loading" 不成立,把它从页面上删掉;然后把下面的 v-else 加到页面上。
  5. 你肉眼看到的结果,就是“正在加载”瞬间消失,真实数据瞬间出现。

总结也就是一句口诀:

数据驱动视图(数据变了,页面自动变)。
你只需要关心“我要把数据改成什么样”,剩下的“怎么改变网页上的标签”,全都由 Vue 自动在底层瞬间帮你完成。这就是框架帮你省下的最大程度解放双手的地方!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容