Vue 组件的定义和使用

逃离我推掉我的手 2022-03-25 15:40 357阅读 0赞

怎样在Vue中定义组件并使用它?其实很简单!

在看懂我接下来的代码之前需要先把下面这幅图看懂 !
在这里插入图片描述
图应该很好理解,App.vue是一个根组件。此根组件包含一个首页组件和一个新闻组件,首页组件和新闻组件同时又包含头部组件。那么代码开始了。
App.vue(根组件)

  1. <template>
  2. <div id="app">
  3. <v-home></v-home> <!-- 使用Home组件-->
  4. <hr>
  5. <br>
  6. <v-news></v-news> <!-- 使用News组件-->
  7. </div>
  8. </template>
  9. <script> /* 1.引入组件 2.挂载组件 3.在模板中使用 */ import Home from './components/Home.vue'; //引入首页组件 import News from './components/News.vue'; //引入新闻组件 export default { data(){ return { msg:'今天是个好天气' } }, components:{ /* 前面的组件名称不能和HTML标签一样*/ 'v-home':Home, //挂载Home组件 'v-news':News, //挂载新闻组件 } } </script>
  10. <style> </style>

越深入学习vue,就会发现根组件越简单,往往都是引入其他的组件。我已在代码中做了很详细的注解。接下来是各个引入的组件。

Home.vue(首页组件)

  1. <template>
  2. <!-- 所有的内容要被根节点包含起来 -->
  3. <div id="home">
  4. <v-header></v-header>
  5. <br>
  6. <h2>这也是一个首页组件---{
  7. {msg}}</h2>
  8. <button @click="run()">执行run方法</button>
  9. </div>
  10. </template>
  11. <script> //引入头部组件 import Header from './Header.vue'; export default { data(){ return{ msg:'我是一个首页组件', } }, methods:{ run(){ alert(this.msg); } }, components:{ 'v-header':Header, } } </script>
  12. <style lang="css" scoped> /* css 局部作用域 scoped*/ h2{ color:red; } </style>

其组件的定义和使用都是一样的,style中的scoped表示局部作用域,该样式只针对Home.vue 使用。

News.vue(新闻组件)

  1. <template>
  2. <div>
  3. <v-header></v-header>
  4. <h2>这是一个新闻组件</h2>
  5. <ul>
  6. <li>aaaaaa</li>
  7. <li>bbbbb</li>
  8. <li>cccccc</li>
  9. <li>ddddd</li>
  10. </ul>
  11. </div>
  12. </template>
  13. <script> import Header from './Header.vue';//引入头部组件 export default { data(){ return{ msg:'我是一个新闻组件' } }, components:{ 'v-header':Header, } } </script>
  14. <style scoped> </style>

看到这里应该是知道如何定义和使用组件了吧,News.vue和Home.vue都引用了Header.vue,其步骤也是一样的

Header.vue(头部组件)

  1. <template>
  2. <div>
  3. <h2 class="header">这是一个头部组件</h2>
  4. </div>
  5. </template>
  6. <script> export default { data(){ return{ msg:'我是一个头部组件' } } } </script>
  7. <style scoped> .header{ background:black; color: gainsboro; } </style>

最后的运行效果是这样的:
在这里插入图片描述
例外,还有一个要注意的问题就是导入组件的路径问题,我在导入时也犯了个小错:
在这里插入图片描述

  1. import Home from './components/Home.vue'; //引入首页组件
  2. import News from './components/News.vue'; //引入新闻组件
  3. import Header from './Header.vue';//引入头部组件

一定要看清你自己的目录结构。

若有任何疑问或是不解,请在下方评论,谢谢。

发表评论

表情:
评论列表 (有 0 条评论,357人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue使用方法

    Vue 组件是 Vue.js 应用中可复用的代码块,通过组件可以将一个页面拆分为多个独立的部分,使代码更加清晰,结构更加简洁。以下是使用 Vue 组件的步骤: -------

    相关 如何使用vue

    目录 1:组件之间的父子关系 2:使用组件的三个步骤 3:components组件的是私有子组件 4:在main.js文件中使用Vue.component全局注册组件

    相关 vue定义封装Loading

    一、需求问题 在vue项目的开发中,会经常遇到这样的需求。当在页面内容进行加载的时候,会进行请求数据,然后显示页面。在这个等待的过程中,会出现一段时间的白屏,我们可以通过加