当前位置: 首页 > article >正文

Vue — 组件化开发

组件化开发:一个页面可以拆分成一个个组件;每个组件都有自己独立的结构、样式、行为

组件分类:普通组件、根组件

其中根组件包裹着所有普通小组件

  • 普通组件的注册使用;有两种注册方式
    • 局部注册
    • 全局注册

局部注册

目标:

  根组件(App.vue):

<template>
  <div class="App">
    <!-- 头部组件 -->

    <!-- 主体组件 -->

    <!-- 底部组件 -->
  </div>
</template>

<script>
export default {

}
</script>

<style>
.App{
  width:600px;
  height:700px;
  background-color: #87ceeb;
  margin: 0 auto;
  padding:20px;
}
</style>

  • 创建组件 -> 往components里建

HmHeader.vue

<template>
  <div class="hm-header">
    我是hm-header
  </div>
</template>

<script>
export default {

}
</script>

<style>
    .hm-header {
        height: 100px;
        line-height: 100px;
        text-align: center;
        font-size: 30px;
        background-color: #8064a2;
        color: white;
    }
</style>
  • 在使用的组件内部导入、注册、使用

导入

注册

使用

完整代码:

App.vue

<template>
  <div class="App">
    <!-- 当成html标签使用:<组件名></组件名> -->
    <!-- 头部组件 -->
    <HmHeader></HmHeader>
    <!-- 主体组件 -->
    <HmMain></HmMain>
    <!-- 底部组件 -->
    <HmFooter></HmFooter>
  </div>
</template>

<script>
// import 组件对象 from '.vue文件路径'
import HmHeader from './components/HmHeader.vue'
import HmMain from './components/HmMain.vue'
import HmFooter from './components/HmFooter.vue'
export default {
  //局部注册
  components:{
    // 组件名:组件对象
    HmHeader: HmHeader,
    HmMain,
    HmFooter
  }
}
</script>

<style>
.App{
  width:600px;
  height:700px;
  background-color: #87ceeb;
  margin: 0 auto;
  padding:20px;
}
</style>

components -> HmHeader.vue

<template>
  <div class="hm-header">
    我是hm-header
  </div>
</template>

<script>
export default {

}
</script>

<style>
    .hm-header {
        height: 100px;
        line-height: 100px;
        text-align: center;
        font-size: 30px;
        background-color: #8064a2;
        color: white;
    }
</style>

components -> HmMain.vue

<template>
    <div class="hm-main">
      我是hm-main
    </div>
  </template>
  
  <script>
  export default {
  
  }
  </script>
  
  <style>
      .hm-main {
          height: 500px;
          line-height: 500px;
          text-align: center;
          font-size: 30px;
          background-color: #f79646;
          color: white;
          margin:20px 0;
      }
  </style>

components -> HmFooter.vue

<template>
    <div class="hm-footer">
      我是hm-footer
    </div>
  </template>
  
  <script>
  export default {
  
  }
  </script>
  
  <style>
      .hm-footer {
          height: 100px;
          line-height: 100px;
          text-align: center;
          font-size: 30px;
          background-color: #4f81bd;
          color: white;
      }
  </style>

全局注册

先来看一下局部注册按钮

只能在注册的组件内使用

目标:

1.创建组件

 2.导入、注册、使用

再来看一下全局注册通用按钮

目标:

在所有的组件范围内都能直接使用

  • 创建组件 -> 往components里建

  • 导入、注册 (在main.js里进行全局注册)

  • 使用 <组件名></组件名>

完整代码:

App.vue

<template>
  <div class="App">
    <!-- 当成html标签使用:<组件名></组件名> -->
    <!-- 头部组件 -->
    <HmHeader></HmHeader>
    <!-- 主体组件 -->
    <HmMain></HmMain>
    <!-- 底部组件 -->
    <HmFooter></HmFooter>
  </div>
</template>

<script>
// import 组件对象 from '.vue文件路径'
import HmHeader from './components/HmHeader.vue'
import HmMain from './components/HmMain.vue'
import HmFooter from './components/HmFooter.vue'
export default {
  //局部注册
  components:{
    // 组件名:组件对象
    HmHeader: HmHeader,
    HmMain,
    HmFooter
  }
}
</script>

<style>
.App{
  width:600px;
  height:700px;
  background-color: #87ceeb;
  margin: 0 auto;
  padding:20px;
}
</style>

main.js

// 入口文件;第一个执行的文件;基于App.vue创建结构渲染index.html
// 导入Vue
import Vue from 'vue'
// 导入App.vue
import App from './App.vue'

import HmButton from './components/HmButton'

//提示当前处于什么环境(生产环境 / 开发环境)
Vue.config.productionTip = true //开发环境


// Vue.component('组件名',组件对象)
Vue.component('HmButton',HmButton)


new Vue({
  render: h => h(App)
}).$mount('#app')

components -> HmButton.vue

<template>
  <button class="hm-button">通用按钮</button>
</template>

<script>
export default {

}
</script>

<style>
    .hm-button {
        height:50px;
        line-height:50px;
        padding:0 20px;
        background-color: #3bae56;
        border-radius:5px;
        color:white;
        border:none;
        /* 垂直对齐 */
        vertical-align: middle;
        cursor:pointer;
    }
</style>

components -> HmHeader.vue

<template>
  <div class="hm-header">
    我是hm-header
    <HmButton></HmButton>
  </div>
</template>

<script>

export default {
  
}
</script>

<style>
    .hm-header {
        height: 100px;
        line-height: 100px;
        text-align: center;
        font-size: 30px;
        background-color: #8064a2;
        color: white;
    }
</style>

components -> HmMain.vue

<template>
    <div class="hm-main">
      我是hm-main
      <HmButton></HmButton>
    </div>
  </template>
  
  <script>
  export default {
  
  }
  </script>
  
  <style>
      .hm-main {
          height: 450px;
          line-height: 500px;
          text-align: center;
          font-size: 30px;
          background-color: #f79646;
          color: white;
          margin:20px 0;
      }
  </style>

components -> HmFooter.vue

<template>
    <div class="hm-footer">
      我是hm-footer
      <HmButton></HmButton>
    </div>
  </template>
  
  <script>
  export default {
  
  }
  </script>
  
  <style>
      .hm-footer {
          height: 100px;
          line-height: 100px;
          text-align: center;
          font-size: 30px;
          background-color: #4f81bd;
          color: white;
      }
  </style>


http://www.kler.cn/a/390503.html

相关文章:

  • 2411C++,C++26反射示例
  • 万字长文解读深度学习——ViT、ViLT、DiT
  • 深入理解接口测试:实用指南与最佳实践5.0(一)
  • NUXT3学习日记一(在我git中拉取代码、文件讲解)
  • LeetCode【0014】最长公共前缀
  • 【2024最新】math-expression-evaluator 动态计算表达式的使用
  • ZYX地图瓦片转mbtiles文件(Python)
  • Postman上传图片如何处理
  • Docker-软件容器平台
  • springboot基于java无人超市管理系统,计算机毕业设计项目源码314,计算机毕设程序(LW+开题报告、中期报告、任务书等全套方案)
  • 漫谈MCU优化:从硬件设计优化到可靠性挑战
  • NVM切换本地node版本
  • Vue前端开发:gsap动画库
  • 10.桥接模式设计思想
  • 基础网络安全知识
  • 修改msyql用户密码及更新mysql密码策略
  • Redis - Hash 哈希
  • MR30分布式IO热插拔:智能时代的便捷与高效
  • uni-app小程序echarts中tooltip被遮盖
  • ★ 算法OJ题 ★ 前缀和算法(下)
  • [OS] 区分按位与()和逻辑与()
  • C# 如何将winform只生成一个绿色文件?
  • 02-1_MVCC版本链清理
  • 手写一些方法
  • Mac保护电池健康,延长电池使用寿命的好方法
  • 十六:Spring Boot依赖 (1)-- spring-boot-starter 依赖详解