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.mzph.cn/bicheng/60421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习】【HTML】HTML、XML、XHTML

HTML 什么是 HTML&#xff1f; HTML (HyperText Markup Language) 是一种用于创建和展示网页的标准标记语言。它由一系列的元素组成&#xff0c;这些元素通过标签的形式来告诉浏览器如何显示内容。 HTML 的基本结构是什么&#xff1f; <!DOCTYPE html> <html> …

【软考】系统架构设计师-计算机系统基础(2):操作系统

1、操作系统基础 OS的5个核心功能&#xff1a;进程管理、存储管理、设备管理、文件管理、作业管理 OS的3个作用&#xff1a;管理运行的程序和分配各种软硬件资源&#xff1b;提供友善的人机界面&#xff1b;为程序应用的开发和运行提供高效的平台 OS的4个特征&#xff1a;并…

Android ANR分析总结

1、ANR介绍 ANR&#xff08;Application Not Responding&#xff09;指的是应用程序无响应&#xff0c;当Android应用程序在主线程上执行长时间运行的操作或阻塞I/O操作时发生。这可能导致应用程序界面冻结或无法响应用户输入。 1、Service ANR&#xff1a;前台20s&#xff0…

WebRTC视频 01 - 视频采集整体架构

一、前言&#xff1a; 我们从1对1通信说起&#xff0c;假如有一天&#xff0c;你和你情敌使用X信进行1v1通信&#xff0c;想象一下画面是不是一个大画面中有一个小画面&#xff1f;这在布局中就叫做PIP&#xff08;picture in picture&#xff09;&#xff1b;这个随手一点&am…

编译ffmpeg动态库时设置RPATH为$ORIGIN

原本&#xff0c;我这样编译: ./configure \--enable-xxx \--disable-yyy \...为了设置 RPATH, 尝试了在 configure 后面设置&#xff0c;如下几种都无效: --extra-ldsoflags"-Wl,-rpath,$ORIGIN" 没有 RPATH--extra-ldsoflags"-Wl,-rpath,$ORIGIN" 没有…

什么是 DAPP?它能解决什么问题?

在区块链技术日益火热的今天&#xff0c;DAPP 这个概念也逐渐走入人们的视野。但是很多人都听到了DAPP这个词&#xff0c;但是大部分人却还是不清楚什么是 DAPP&#xff1f;它又能解决什么问题呢&#xff1f;接下来这篇文章就带大家了解一下DAPP。 一、什么是 DAPP&#xff1f…

C++ 中的 JSON 序列化和反序列化:结构体与枚举类型的处理

在 C 编程中&#xff0c;处理 JSON 数据是一项常见任务&#xff0c;特别是在需要与其他系统或前端进行数据交换时。nlohmann::json 库是一个功能强大且易于使用的 JSON 库&#xff0c;它允许我们轻松地在 C 中进行 JSON 数据的序列化和反序列化。本文将详细介绍如何使用 nlohma…

ESLint 使用教程(三):12个ESLint 配置项功能与使用方式详解

前言 在现代前端开发中&#xff0c;代码质量与一致性是至关重要的&#xff0c;ESLint 正是为此而生的一款强大工具&#xff0c;本文将带您详细了解 ESLint 的配置文件&#xff0c;并通过通俗易懂的方式讲解其主要配置项及其配置方法。此外&#xff0c;我们还将探讨一些高级配置…

linux可执行文件添加到PATH环境变量的方法

linux可执行文件添加到PATH环境变量的方法 linux命令行下面执行某个命令的时候&#xff0c;首先保证该命令是否存在&#xff0c;若存在&#xff0c;但输入命令的时候若仍提示&#xff1a;command not found 这个时候就的查看PATH环境变量的设置了&#xff0c;当前命令是否存在于…

Android 14 SPRD 下拉菜单中增加自动亮度调节按钮

为了在 Android 14 的下拉菜单中增加自动亮度调节按钮&#xff0c;可以按照以下步骤进行代码修改。 1. 添加图标资源 在 SystemUI 资源文件夹中添加自动亮度图标&#xff1a; 文件路径&#xff1a; frameworks/base/packages/SystemUI/res/drawable/ic_settings_display_wh…

Jenkins应用详解(Detailed Explanation of Jenkins Application)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

【LeetCode】【算法】5. 最长回文子串

LeetCode 5. 最长回文子串 题目描述 给你一个字符串s&#xff0c;找到 s 中最长的回文子串。 思路 思路&#xff1a;中心扩散法 遍历字符串s&#xff0c;对每一个字符用中心扩散法。确定好中点之后向两边扩散&#xff0c;若两边字符相同则len2。若遍历下来len>maxLen则记…

开源数据库 - mysql - mysql-server-8.4(gtid主主同步+ keepalived热切换)部署方案

前置条件 假设主从信息 mysqlhostport主192.168.1.13306从192.168.1.23306vip192.168.1.3 部署流程 导出测试环境表结构与数据 使用mysqldump ./mysqldump -ulzzc -p -S /tmp/mysql3306.sock --single-transaction --database lzzc > databaseLZZCxxxx.sql查看gtid号 …

【Python】计算机视觉应用:OpenCV库图像处理入门

计算机视觉应用&#xff1a;OpenCV库图像处理入门 在当今的数字化时代&#xff0c;计算机视觉&#xff08;Computer Vision&#xff09;已经渗透到各行各业&#xff0c;比如自动驾驶、智能监控、医疗影像分析等。而 Python 的 OpenCV 库&#xff08;Open Source Computer Visi…

【LeetCode】【算法】33. 搜索旋转排序数组

LeetCode 33. 搜索旋转排序数组 题目描述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k…

【C++】 list 与 string 基础与实现字符串操作

【C】使用 list 与 string 实现基础字符串操作 文章目录 一、字符串的基础操作1.1 - startsWith1.2 - endsWith1.3 - trim1.4 - indexOf1.5 - replaceAll 二、list 基础操作2.1 - 遍历2.1.1 - 使用迭代器访问2.1.2 - 使用基于范围的 for 循环遍历2.1.3 - 使用标准算法库遍历 2.…

ctfshow-web入门-反序列化(web260-web264)

目录 1、web260 2、web261 3、web262 4、web263 5、web264 1、web260 要求传入的内容序列化后包含指定内容即可&#xff0c;在 PHP 序列化中&#xff0c;如果键名或值包含 ctfshow_i_love_36D&#xff0c;那么整个序列化结果也会包含这个字符串。 payload&#xff1a; ?…

Python 爬虫运行状态监控:进度、错误与完成情况

Python 爬虫运行状态监控&#xff1a;进度、错误与完成情况 在进行大规模数据爬取时&#xff0c;监控爬虫的运行状态至关重要。通过实时监控&#xff0c;可以了解爬虫的工作进度、出现的错误以及任务完成情况。这样可以及时发现并解决问题&#xff0c;确保数据抓取任务顺利进行…

Flutter错误: uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared

前言 今天要做蓝牙通信的功能&#xff0c;我使用了flutter_reactive_ble这个库&#xff0c;但是在运行的时候发现一下错误 Launching lib/main.dart on AQM AL10 in debug mode... /Users/macbook/Desktop/test/flutter/my_app/android/app/src/debug/AndroidManifest.xml Err…

除了易我数据恢复,这10个数据恢复软件也能点亮数据找回的希望之光。

易我数据恢复工具具有广泛的系统兼容性&#xff0c;并且里面功能丰富&#xff0c;操作简单&#xff0c;能够完成多种数据恢复操作&#xff0c;是一款比较专业的数据恢复软件。如果大家在为数据丢失而烦恼的话&#xff0c;我可以推荐几款好用的数据恢复软件给大家。 1、福昕数据…