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

ops/2024/10/10 21:06:50/

【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/ops/123650.html

相关文章

Java 运行机制及运行过程

Java的运行机制是基于Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;的。Java程序在运行时&#xff0c;首先需要将源代码通过Java编译器编译为字节码文件&#xff08;.class文件&#xff09;&#xff0c;然后由JVM解释执行或通过即时编译器&#xff0…

TreeSet(红黑树)

目录 案例一&#xff1a;treeSet集合的常见使用方法 案例二&#xff1a;treeSet存储类的对象时&#xff0c;需要实现接口 案例三&#xff1a;Comparator接口 平衡二叉查找树——红黑树&#xff1a; 案例一&#xff1a;treeSet集合的常见使用方法 package com.collection;im…

python 实现even_tree偶数树算法

even_tree偶数树算法介绍 even_tree偶数树算法是一种用于分割树结构的算法&#xff0c;目的是使得每个子树的节点数量都是偶数。 以下是对该算法的一些详细解释&#xff1a; 定义 偶数树&#xff08;Even Tree&#xff09;是一种有根树&#xff0c;其中除了根节点外&#xf…

php常用的注释符号

如果没有安装vscode和小皮&#xff0c;请点击下方链接安装&#xff1a; Vscode、小皮面板安装-CSDN博客 在学习php过程中&#xff0c;肯定少不了注释&#xff0c;也可以理解为备注的信息&#xff0c;来提醒自己这段代码有什么用&#xff0c;是什么意思等&#xff0c;接下来就介…

前端Vue3字体优化三部曲(webFont、font-spider、spa-font-spider-webpack-plugin)

前端Vue字体优化三部曲&#xff08;webFont、font-spider、spa-font-spider-webpack-plugin&#xff09; 引言 最近前端引入了UI给的思源黑体字体文件&#xff0c;但是字体文件过于庞大&#xff0c;会降低页面首次加载的速度&#xff0c;目前我的项目中需要用到如下三个字体文…

项目定位与服务器(SERVER)模块划分

目录 定位 HTTP协议以及HTTP服务器 高并发服务器 单Reactor单线程 单Reactor多线程 多Reactor多线程 模块划分 SERVER模块划分 Buffer 模块 Socket模块 Channel 模块 Connection模块 Acceptor模块 TimerQueue模块 Poller模块 EventLoop模块 TcpServer模块 SE…

R语言中的plumber介绍

R语言中的plumber介绍 基本用法常用 API 方法1. GET 方法2. POST 方法3. 带路径参数的 GET 方法 使用 R 对数据进行操作处理 JSON 输入和输出运行 API 的其他选项其他功能 plumber 是个强大的 R 包&#xff0c;用于将 R 代码转换为 Web API&#xff0c;通过使用 plumber&#x…

算法题解:找不到百草枯

问题描述&#xff1a;有瓶有毒药水不知道是那个。经过m次混和&#xff0c;求哪一次可以得到药水和药水的编号&#xff1b;否则&#xff0c;输出可能的药水编号。 思路&#xff1a;用dy表示当前可能为毒药的个数&#xff0c;notdy表示一定不是毒药的个数。同时开个vis数组&…