Vue】Vue扫盲(四)组件化思想与简单应用

embedded/2024/12/22 9:09:58/

【Vue】Vue扫盲(一)事件标签、事件修饰符:@click.prevent @click.stop @click.stop.prevent、按键修饰符、及常用指令

【Vue】Vue扫盲(二)指令:v-for 、v-if、v-else-if、v-else、v-show

【Vue】Vue扫盲(三)计算属性和监听器

文章目录

    • 1、组件的概念
    • 2.1、组件的复用-全局组件
    • 2.2、组件的复用-局部组件

在大型应用开发的时候, 页面可以划分成很多部分。 往往不同的页面, 也会有相同的部分。 例如可能会有相同的头部导航。
但是如果每个页面都独自开发, 这无疑增加了我们开发的成本。 所以我们会把页面的不同部 分拆分成独立的组件,
然后在不同页面就可以共享这些组件, 避免重复开发。

1、组件的概念

在 vue 里, 所有的 vue 实例都是组件
在这里插入图片描述

2.1、组件的复用-全局组件

我们通过 Vue 的 component 方法来定义一个全局组件。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"><button v-on:click="count++">我被点击了{{count}}次</button><!-- 使用抽取出来的公共组件,可以无限的被重复使用 --><counter></counter><counter></counter><counter></counter><counter></counter><counter></counter></div><script src="../node_modules/vue/dist/vue.js"></script><script>javascript">/* 将点击增加数量的功能抽取成一个组件 *///1、全局声明注册一个组件Vue.component("counter",{template:` <button v-on:click="count++">我被点击了{{count}}次</button>`,data(){    //特别注意:这里需要是以函数的形式对于每个使用的地方都抽取成了一个新的对象,不能以之前的{} 来返回,这样的返回的话,如果对于一个页面,则会都使用了一个data了。会互相影响所有重复的组件return {count:1}}});new Vue({el:"#app",data:{count:1}})</script>
</body>
</html>

单个组件 :
在这里插入图片描述

其中这部分是对于组件的全局抽取、使用的代码:

使用代码&全局抽取代码
注意:对于抽取的data部分:这里需要是以函数的形式对于每个使用的地方都抽取成了一个新的对象,不能以之前的{} 来返回,这样的返回的话,如果对于一个页面,则会都使用了一个data了。会互相影响

//使用代码<counter></counter><counter></counter><counter></counter><counter></counter><counter></counter>
、、抽取代码<script>javascript">/* 将点击增加数量的功能抽取成一个组件 *///1、全局声明注册一个组件Vue.component("counter",{template:` <button v-on:click="count++">我被点击了{{count}}次</button>`,data(){  //这里需要是以函数的形式对于每个使用的地方都抽取成了一个新的对象,不能以之前的{} 来返回,这样的返回的话,如果对于一个页面,则会都使用了一个data了。会互相影响所有重复的组件return {count:1}}});</script>

组件被多次重复使用之后的效果
在这里插入图片描述

 组件其实也是一个 Vue 实例, 因此它在定义时也会接收: data、 methods、 生命周期函
数等
 不同的是组件不会与页面的元素绑定, 否则就无法复用了, 因此没有 el 属性。
 但是组件渲染需要 html 模板, 所以增加了 template 属性, 值就是 HTML 模板
 全局组件定义完毕, 任何 vue 实例都可以直接在 HTML 中通过组件名称来使用组件了
 data 必须是一个函数, 不再是一个对象。
因为导出的组件也是一个Vue实例,所以Vue中可以写的那些watch、computed都可以在导出的组件中写这些内容。
再次注意:组件的 data 属性必须是函数!一个组件的 data 选项必须是一个函数, 因此每个实例可以维护一份被返回对象的独立的拷
贝;因为这里需要是以函数的形式对于每个使用的地方都抽取成了一个新的对象,不能以之前的data{count:1} 来返回,因为之前这样的返回的话,如果对于一个页面,则会都使用了一个data了。会互相影响所有重复的组件的计数。

2.2、组件的复用-局部组件

一旦全局注册, 就意味着即便以后你不再使用这个组件, 它依然会随着 Vue 的加载而加载。
因此, 对于一些并不频繁使用的组件, 我们会采用局部注册;

示例
我们先在外部定义一个对象, 结构与创建全局组件时传递的第二个参数一致:
(一)我们先局部声明一个组件

<script>javascript">//2、局部声明一个组件;这个需要在想要使用的Vue中的components中去声明;const buttonCounter={template:` <button v-on:click="count++">我被点击了{{count}}次~~~</button>`,data(){ //这里需要是以函数的形式对于每个使用的地方都抽取成了一个新的对象,不能以之前的{} 来返回,这样的返回的话,如果对于一个页面,则会都使用了一个data了。会互相影响return {count:1}}}</script>

(二)然后再在下面的Vue实例中组件属性中去注册他

<script>javascript">new Vue({el:"#app",data:{count:1},components:{'button-counter' :buttonCounter   //注册上面局部组件后才能使用}})
</script>

(三)在Html的div中使用

在这里插入图片描述
使用效果:
在这里插入图片描述


http://www.ppmy.cn/embedded/126060.html

相关文章

旅游管理系统开发新篇章:SpringBoot技术解析

第二章 相关技术简介 2.1 JAVA技术 本次系统开发采用的是面向对象的Java作为软件编程语言&#xff0c;Java表面上很像C&#xff0c;但是Java仅仅是继承了C的某些优点&#xff0c;程序员很少使用的C语言的特征在Java设计中去掉了。Java编程语言并没有什么结构&#xff0c;它把数…

Java生成csv格式文件样例_快速详细

Java高效Excel处理工具EasyExcel&#xff1a;解决大文件读写难题 EasyExcel是一个基于Java的高效、简洁的Excel处理工具&#xff0c;专为解决大文件内存溢出问题而设计。它能够在不牺牲性能的前提下快速完成Excel文件的读写操作。相比于传统的Apache POI等框架&#xff0c;Eas…

易泊:精准与高效的车牌识别解决方案

在当今数字化的时代&#xff0c;车牌识别技术在交通管理、停车场管理等领域发挥着至关重要的作用。而易泊车牌识别相机以其卓越的性能和先进的技术&#xff0c;成为了众多用户的首选。其中&#xff0c;DSP 嵌入式车牌识别技术更是为其增添了强大的优势。 一、易泊车牌识别相机的…

基于MP提供的dynamic-datasource实现多数据源

随着项目规模的扩大&#xff0c;单一数据源已无法满足复杂业务需求&#xff0c;多数据源&#xff08;动态数据源&#xff09;应运而生。项目遇到的多数据源场景&#xff1a;通过Flink CDC采集某个数据源变化数据&#xff08;主表数据&#xff09;&#xff0c;变化数据&#xff…

【Java SE 题库】递归的魅力之--> 汉诺塔问题

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 题目 2. 分析 2.1 图解 2.2 代码解析 3. 完整代码 3.1 运行截图 4. 小结 1. 题目 汉诺塔问题是一个经典的递归问题&#xff0c;源自一个古老的印度传…

PDF文件怎么添加水印?这里有6个方法

PDF文件怎么添加水印&#xff1f;在职场中&#xff0c;随着信息数字化的普及&#xff0c;PDF文件已成为我们日常工作中不可或缺的一部分。然而&#xff0c;如何在这些文件中确保信息的安全性和版权保护&#xff0c;成为了许多企业面临的重要课题。其中&#xff0c;给PDF文件添加…

论霍尔开关在紫外线消毒盒中的应用

紫外线消毒灯&#xff0c;顾名思义&#xff0c;便是利用紫外线进行灭菌消毒的灯具&#xff0c;紫外线向外辐射波长为253.7nm的紫外线(U),该段波长的紫外线杀菌能力极强&#xff0c;可以迅速破坏细菌、病毒的DNA和RNA,因比可用于对水、空气、衣物消毒&#xff0c;但不可直接应用…

计算机网络:计算机网络概述 —— 描述计算机网络的参数

文章目录 数据量性能指标速率带宽数据传输速率 吞吐量时延分析时延问题 时延带宽积往返时间利用率丢包率丢包的情况 抖动可用性可靠性安全性 计算机网络是现代信息社会的基础设施&#xff0c;其性能和可靠性对各类应用至关重要。为了理解和优化计算机网络&#xff0c;我们需要深…