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

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

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

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

(三)在Html的div中使用

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444593.html

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

相关文章

解决银河麒麟桌面操作系统V10(ARM)中`apt-get update`“正在等待报头”问题

解决银河麒麟桌面操作系统V10&#xff08;ARM&#xff09;中apt-get update“正在等待报头”问题 1、问题描述2、 解决方法步骤一&#xff1a;打开终端步骤二&#xff1a;清理APT缓存步骤三&#xff1a;再次尝试更新软件源 &#x1f496;The Begin&#x1f496;点点关注&#x…

spring面试之2024

1、什么是spring? Spring是一个Java开发框架&#xff0c;它提供了一种可扩展的模型来开发Java应用程序。Spring框架的目标是提供一个全面的解决方案&#xff0c;用于构建企业级应用程序。Spring框架的核心特点包括依赖注入&#xff08;DI&#xff09;、面向切面编程&#xff…

django的路由分发

前言&#xff1a; 在前面我们已经学习了基础的Django了&#xff0c;今天我们将继续学习&#xff0c;我们今天学习的是路由分发&#xff1a; 路由分发是Web框架中的一个核心概念&#xff0c;它指的是将不同的URL请求映射到对应的处理函数&#xff08;视图&#xff09;的过程。…

如何提高专利申请的成功率?

在当今充满创新与竞争的时代&#xff0c;专利成为了保护智力成果、赢得市场优势的重要武器。然而&#xff0c;专利申请并非一帆风顺&#xff0c;许多申请人在这一过程中面临诸多挑战&#xff0c;导致申请成功率不尽如人意。那么&#xff0c;如何才能在这复杂的专利申请之路上提…

宝塔 进程守护管理器 神坑,再次跌入。thinkphp-queue队列 勤勤学长

如果&#xff0c;你有在使用【进程守护管理器】&#xff0c;记得在更新/重启&#xff0c;甚至卸载重新安装后&#xff0c;重启服务器。 事情的起因是&#xff0c;昨日服务器突然异常&#xff0c;网站无法正常访问&#xff0c;进入宝塔面板&#xff0c;发现 cpu和负载率均超过1…

2024.10月11日--- SpringMVC拦截器

拦截器 1 回顾过滤器&#xff1a; Servlet规范中的三大接口&#xff1a;Servlet接口&#xff0c;Filter接口、Listener接口。 过滤器接口&#xff0c;是Servlet2.3版本以来&#xff0c;定义的一种小型的&#xff0c;可插拔的Web组件&#xff0c;可以用来拦截和处理Servlet容…

1000题-计算机网络系统概述

术语定义与其他术语的关系SDU&#xff08;服务数据单元&#xff09;相邻层间交换的数据单元&#xff0c;是服务原语的表现形式。在OSI模型中&#xff0c;SDU是某一层待传送和处理的数据单元&#xff0c;即该层接口数据的总和。 - SDU是某一层的数据集&#xff0c;准备传递给下一…

ICDE 2024最新论文分享|BEEP:容量约束下能够对抗异常干扰的航运动态定价系统

论文简介 本推文详细介绍了上海交通大学高晓沨教授和陈贵海教授团队发表在顶级学术会议ICDE 2024上发表的最新论文《Corruption Robust Dynamic Pricing in Liner Shipping under Capacity Constraint》&#xff0c;该论文的学生作者为胡永祎、李雪嫣、魏熙锴&#xff0c;合作…

Midjourney零基础学习

Midjourney学习笔记TOP04 Midjourney的各种参数设置 Midjourney的用户操作界面没有醒目的工具栏、属性栏&#xff0c;所有的操作都是通过调用各种指令和参数进行的。 【MJ Version】 Midjourney在2023年3月份就已经更新到了V5版本&#xff0c;V5版本除了画质有所提升外&#…

MacOS 同时配置github、gitee和gitlab密钥

MacOS 同时配置github、gitee和gitlab密钥 1 在终端中新建 ~/.ssh目录 1.1 生成GitHub、Gitee和Gitlab的SSH密钥对 ssh-keygen -t ed25519 -C "xxxxxxxxxxx.com" -f ~/.ssh/id_ed25519_gitee ssh-keygen -t ed25519 -C "xxxxxxxxxxx.com" -f ~/.ssh/id_…

TikTok代理IP全面使用指南

对于那些希望通过社交媒体打造个人品牌的人来说&#xff0c;TikTok是现在热门的平台&#xff0c;他的流量与曝光不可小觑&#xff0c;相信很多跨境营销会选择他进行多账号营销。问题是&#xff0c;TikTok多账号很容易遇到封禁问题&#xff0c;那么如何解决&#xff1f; 一、什么…

无人机集群路径规划:5种优化算法(SFOA、APO、GOOSE、CO、PIO)求解无人机集群路径规划,提供MATLAB代码

一、单个无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化…

pytest:4种方法实现 - 重复执行用例 - 展示迭代次数

简介&#xff1a;在软件测试中&#xff0c;我们经常需要重复执行测试用例&#xff0c;以确保代码的稳定性和可靠性。在本文中&#xff0c;我们将介绍四种方法来实现重复执行测试用例&#xff0c;并显示当前迭代次数和剩余执行次数。这些方法将帮助你更好地追踪测试执行过程&…

Python | Leetcode Python题解之第468题验证IP地址

题目&#xff1a; 题解&#xff1a; class Solution:def validIPAddress(self, queryIP: str) -> str:if queryIP.find(".") ! -1:# IPv4last -1for i in range(4):cur (len(queryIP) if i 3 else queryIP.find(".", last 1))if cur -1:return &q…

Jupyter的使用分享

文章目录 碎碎念安装方法1.安装Anaconda方法2.通过库的安装方式 启动使用教程1.指定目录打开2.启动后的简单使用 小结 碎碎念 前情提示 之前与许多小伙伴交流的时候&#xff0c;发现大家对于pycharm更容易上手&#xff08;可能是比较好设置中文的原因&#xff09;&#xff0c;在…

【MySQL】-- 表的操作

文章目录 1. 查看所有表1.1 语法 2. 创建表2.1 语法2.2 示例2.3 表在磁盘上对应的文件 3. 查看表结构3.1 语法3.2 示例 4. 查看创建表的语句5. 修改表5.1 语法5.2 示例5.2.1 向表中添加一列5.2.2 修改某列的长度5.2.3 重命名某列5.2.4 删除某个字段5.2.5 修改表名 6. 删除表6.1…

CANoe_调用C#控件的方法_DEMO方法演示

1、DEMO存放位置 D:\Users\Public\Documents\Vector\CANoe\Sample Configurations 11.0.96\CAN\MoreExamples\ActiveX_DotNET_Panels 每个人的电脑因为有区别存放位置不一样 2、控件制作--使用C#控件可以直接制作 3、控件代码 using System; using System.Collections; usi…

Java调用WebService接口实践案例

最终效果 在网上找了一个免费的webservice接口简单做个测试,可以正常返回结果 public static void main(String[] args) {String url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";String xmlData = "<soapenv:Envelope xmlns:soapen…

springboot 整合spring ai实现 基于知识库的客服问答

rag 需求产生的背景介绍&#xff1a; 在使用大模型时&#xff0c;常遇到的问题之一是模型可能产生幻觉&#xff0c;即生成的内容缺乏准确性。此外&#xff0c;由于大模型不直接访问企业的专有数据&#xff0c;其响应可能会显得泛泛而谈&#xff0c;不够精准或具体&#xff0c;…

onnx代码解读

一、定义 torch.jit.trace 相关代码解读onnx 内部实现 3 查看是否为aten 算子aten 算子实现torch.autograd.Functions 算子实现自定义算子实现查找未实现的节点一次性发现所有的未实现 aten 算子 二、实现 torch.jit.trace 相关代码解读 1. torch.jit.script() : 将其转换为…