浅学Vue
本文最后更新于192 天前,其中的信息可能已经过时,如有错误请发送邮件到2067863254@qq.com

一个Vue3项目通常包含以下文件和文件夹:

没问题!作为你的全栈开发“导游”,我会用最通俗易懂的方式,带你快速掌握Vue的组件。我们抛开复杂的术语,用生活中的例子来理解。

第一步:我们先理解什么是“组件”

想象一下,你要组装一台电脑。 一台电脑是由​​主板、CPU、内存、硬盘、显卡​​这些部件组成的。每个部件都有自己特定的功能和外观。你不需要关心CPU内部是怎么造的,你只需要知道把它插到主板的哪个插槽上,它就能工作。 在Vue的世界里,​​一个Vue组件就是这样一个“部件”​​。

  • ​一个按钮​​可以是一个组件
  • ​一个导航栏​​可以是一个组件
  • ​一条用户评论​​可以是一个组件
  • ​一个弹出框​​可以是一个组件

​为什么要用组件?(组件化的好处)​

  1. ​可复用性​​:就像你造了一个特别好看的按钮,可以在整个网站的几十个地方都用它,而不需要重复写代码。
  2. ​可维护性​​:如果这个按钮要改颜色,你只需要修改组件这一处的代码,所有用到这个按钮的地方就自动全更新了!想想看,如果没有组件,你得手动改几十个地方,多可怕。
  3. ​结构清晰​​:一个复杂的页面可以拆分成许多个小组件,就像搭乐高一样。每个人负责拼装不同的部件,最后组合起来,项目结构非常清晰,便于团队协作。

第二步:亲手创建一个最简单的组件

我们来把上面的理论变成代码。Vue组件通常由三部分组成,这非常直观:

  1. ​模板​​:组件的“HTML外观”,长什么样。
  2. ​脚本​​:组件的“大脑”,负责逻辑和行为。
  3. ​样式​​:组件的“衣服”,负责好看。

我们来看一个最简单的组件例子:一个显示问候语的组件。

<!-- 1. 模板 (Template): 定义组件的样子 -->
<template>
  <div class="greeting">
    <h1>{{ message }}</h1>
    <button @click="sayHello">点击我!</button>
  </div>
</template>

<!-- 2. 脚本 (Script): 定义组件的行为和数据 -->
<script>
export default {
  name: 'GreetingComponent', // 给组件起个名字
  data() {
    return {
      message: '你好,我是Vue组件!' // 组件内部的数据
    }
  },
  methods: {
    sayHello() {
      this.message = '你好啊,' + new Date().toLocaleTimeString();
    }
  }
}
</script>

<!-- 3. 样式 (Style): 定义组件的样式 -->
<style scoped>
.greeting {
  color: blue;
  text-align: center;
}
</style>

​逐行解释:​

  • <template>部分​​:
    • {{ message }}: 这是Vue的“魔法符号”,表示这里要显示一个动态的数据。这个数据来自下面的 script部分。
    • @click="sayHello": 表示当按钮被点击时,要去执行下面 script部分定义的 sayHello方法。
  • <script>部分​​:
    • data(): 这个函数返回的就是这个组件自己用的“数据仓库”。message就存放在这里。
    • methods: 这里存放这个组件的所有“功能”,比如 sayHello函数。当它被调用时,它改变了 message的值。
  • <style scoped>部分​​:
    • scoped这个属性非常重要!它表示这些CSS样式​​只在这个组件内生效​​,不会影响页面其他部分。这就保证了你的组件样式不会“污染”别人。

这个文件通常保存为 .vue文件,比如 Greeting.vue


第三步:如何使用这个组件?(父传子)

组件造好了,就像乐高积木造好了,现在我们要把它“插”到主板上(也就是我们的页面里)。 假设我们有一个 App.vue文件,它是整个应用的“根组件”。 ​​场景1:直接使用​

<!-- 在 App.vue 中 -->
<template>
  <div id="app">
    <h1>我的Vue应用</h1>
    <!-- 像使用普通HTML标签一样使用你的组件 -->
    <GreetingComponent />
  </div>
</template>

<script>
// 1. 引入组件
import GreetingComponent from './components/Greeting.vue';

export default {
  name: 'App',
  components: {
    // 2. 注册组件
    GreetingComponent
  }
}
</script>

​步骤很简单:​

  1. import ...: 告诉Vue,我要用哪个组件文件。
  2. components: { ... }: 把这个组件“注册”到当前App.vue里,并给它起个名字(标签名)。
  3. <GreetingComponent />: 在模板中直接使用这个标签。

​场景2:让组件更灵活 – 传递参数(Props)​​ 如果我希望这个问候语组件能显示对任何人的问候,比如有时显示“你好,小明!”,有时显示“你好,小红!”,该怎么办? 这就需要用到一个核心概念:​​Props(属性)​​。你可以把它理解为给组件传递参数。 ​​修改 Greeting.vue:​

<template>
  <div class="greeting">
    <h1>{{ message }}, {{ name }}!</h1>
    <button @click="sayHello">点击我!</button>
  </div>
</template>

<script>
export default {
  name: 'GreetingComponent',
  // 声明这个组件可以接收哪些“参数”
  props: {
    name: {
      type: String, // 参数的类型是字符串
      default: '世界' // 如果父组件不传这个参数,默认显示“世界”
    }
  },
  data() {
    return {
      message: '你好'
    }
  },
  methods: {
    sayHello() {
      this.message = '你好啊';
    }
  }
}
</script>

​在 App.vue 中传递参数:​

<template>
  <div id="app">
    <h1>我的Vue应用</h1>
    <!-- 通过属性传递名字 -->
    <GreetingComponent name="小明" />
    <GreetingComponent name="小红" />
    <GreetingComponent /> <!-- 不传name,会使用默认值“世界” -->
  </div>
</template>

<script>
import GreetingComponent from './components/Greeting.vue';

export default {
  name: 'App',
  components: {
    GreetingComponent
  }
}
</script>

现在,页面上会显示三个组件:

  • 第一个显示:​​你好,小明!​
  • 第二个显示:​​你好,小红!​
  • 第三个显示:​​你好,世界!​

看,我们只是通过改变 name这个属性,就复用了同一个组件,让它呈现了不同的内容。这就是组件的威力!


快速掌握路线图

  1. ​基础入门​​:先学会 .vue文件的三个部分(<template>, <script>, <style>),知道怎么写一个静态组件。
  2. ​掌握核心概念​​:
    • ​数据 data​:组件内部的状态。
    • ​方法 methods​:组件内部的函数。
    • ​属性 props​:​​父组件 => 子组件​​ 传递数据。(​​非常重要!​​)
    • ​事件 $emit​:​​子组件 => 父组件​​ 通信。(比如子组件里的按钮被点击了,要告诉父组件)
  3. ​实战练习​​:尝试把页面上的每个小部分都拆成一个组件,比如 Header.vue, Footer.vue, UserCard.vue 等。

总结

把Vue组件想象成​​乐高积木​​:

  • ​你负责设计和制造积木​​(编写 .vue文件)。
  • ​你可以给积木设定一些可调节的接口​​(定义 props)。
  • ​最后你用这些积木搭建出宏伟的城堡​​(在 App.vue等地方引入并使用组件)。

先从模仿和写一些小组件开始,比如按钮、头像、卡片,很快你就能体会到Vue组件化开发的乐趣和高效了! 如果有任何一步不清楚,或者想了解更深入的概念(比如“事件$emit”),随时可以再问我!祝你学习愉快!

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇