vue组件的基本使用方法

组件

【1】组件是什么?

  • 组件就是:扩展 HTML 元素,封装可重用的代码,目的是复用
  • 例如:有一个轮播图,可以在很多页面中使用,一个轮播有js,css,html
  • 组件把js,css,html放到一起,有逻辑,有样式,有html

【2】组件的组成

  • 模板 (Template):定义了组件的结构和布局,采用 HTML 语法。
  • 数据 (Data):组件内部的数据状态,可以通过 Vue 的数据绑定机制将数据和模板进行关联。
  • 方法 (Methods):定义了组件的行为和逻辑,可以在组件中定义各种方法来处理事件、计算属性等。
  • 生命周期钩子 (Lifecycle Hooks):Vue 提供了一系列的生命周期钩子函数,用于在组件生命周期的不同阶段执行特定的逻辑。
  • 计算属性 (Computed Properties):用于定义基于响应式数据的派生状态,通常用于复杂的数据计算。
  • 监听器 (Watchers):用于观察和响应数据的变化,可以在数据发生变化时执行特定的逻辑。

【3】组件的分类:

  • **全局组件:**可以放在根中
  • 局部组件:

【4】组件的使用

  • 1 使用Vue.component 定义全局组件
  • 2 在组件中通过components配置项定义局部组件
  • 3 局部组件只能用在组件内部
  • 4 组件中的数据,事件都是独立
<!--   -局部组件:只能在当前页面中使用-全局组件:全局都可以用  -->

注意点:

  • 定义的组件(body中的位置)必须要放在Vue实例(这也是一个组件 根组件)中
  • 局部组件 必须放在 全局组件/根组件 中,无法单独使用
  • 定义的组件必须在Vue实例的上方

全局组件

组件共享一些公共功能,同时保持组件的独立性

    // 在 Vue 实例中注册局部组件Vue.component('local-lzhu', localLzhu);

这个就是注册组件的方法

  • 这个全局组件有点像Django的继承

  • 值得注意的事:不管任何以下语句都要写上

    •     new Vue({el: "#app"});
      

      全局的使用步骤:

  • 在 Vue 实例外部定义组件:使用 Vue.component 方法来定义全局组件,需要指定组件的名称和组件配置选项,如模板、数据、方法等。

    • Vue.component('all-zhu', {template: `<div>asdgq1<h1>--------------------------</h1><img src="https://pic.netbian.com/uploads/allimg/240410/223535-17127597352d7a.jpg" alt="" height="300px" width="250px"></div>`,});
      
  • 在 HTML 中引用组件:在 HTML 模板中使用自定义的组件标签,像使用普通 HTML 标签一样,将组件标签插入到所需位置。

    • <div id="app"><all-zhu></all-zhu>
      </div>
      
  • 创建 Vue 实例:实例化 Vue 应用程序,并将其挂载到 HTML 页面的特定元素上,通常通过指定 el 选项来实现。

    •     // 创建 Vue 实例new Vue({el: "#app"});
      
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><!--  bootstrap  --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"><!--  Vue  --><script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script><!--  axios  --><script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<div id="app"><all-zhu></all-zhu></div><script>// 定义组件Vue.component('all-zhu', {template: `<div>asdgq1<h1>--------------------------</h1><img src="https://pic.netbian.com/uploads/allimg/240410/223535-17127597352d7a.jpg" alt="" height="300px" width="250px"></div>`,data() {return {title: '首页',hobby: ['music', 'running', 'swim']}},methods: {handClick() {alert(this.title);this.hobby[0] = "hong"}}});// 创建 Vue 实例new Vue({el: "#app"});
</script></body>
</html>

局部组件

  • (不建议)在全局组件当中引入局部组件 ,但是局部组件可以直接应用到我的<body>标签当中

局部组件的使用步骤

  • 在Vue实例当中创建components在里面创建局部组件的标签

  • // 创建 Vue 实例
    new Vue({el: "#app",data:{},components:{loacllzhu // 在 Vue 实例中注册局部组件}
    });
    
  • 再使用定义的标签创建局部组件

  • // 定义局部组件
    const loacllzhu = {template: `<div><img src="https://pic.netbian.com/uploads/allimg/200604/001849-15912011295e8a.jpg" alt="" height="300px" width="250px"></div>`,
    }
    
  • 最后使用局部组件

    • <div id="app"><all-zhu></all-zhu><hr><h1>这个是局部组件</h1><loacllzhu></loacllzhu>
      </div>
      
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><!--  bootstrap  --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"><!--  Vue  --><script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script><!--  axios  --><script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<div id="app"><all-zhu></all-zhu><hr><h1>这个是局部组件</h1><loacllzhu></loacllzhu>
</div><script>// 定义局部组件const loacllzhu = {template: `<div><img src="https://pic.netbian.com/uploads/allimg/200604/001849-15912011295e8a.jpg" alt="" height="300px" width="250px"></div>`,}// 定义全局组件Vue.component('all-zhu', {template: `<div><h1>--------------------------</h1><h1>这个是全局组件</h1><img src="https://pic.netbian.com/uploads/allimg/240410/223535-17127597352d7a.jpg" alt="" height="300px"width="250px"></div>`,data() {return {title: '首页',hobby: ['music', 'running', 'swim']}},methods: {handClick() {alert(this.title);this.hobby[0] = "hong"}}});// 创建 Vue 实例new Vue({el: "#app",data:{},components:{loacllzhu // 在 Vue 实例中注册局部组件}});
</script></body>
</html>

image-20240428204823201

局部组件 放在 Vue实例(全局组件) 中

  • 不建议怎么做可能会导致数据混乱不符合(Vue的设计理念)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><!--  bootstrap  --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"><!--  Vue  --><script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script><!--  axios  --><script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<div id="app"><all-zhu></all-zhu><hr><h1>这个是局部组件</h1><loacllzhu></loacllzhu>
</div><script>// 定义局部组件const loacllzhu = {template: `<div><img src="https://pic.netbian.com/uploads/allimg/200604/001849-15912011295e8a.jpg" alt="" height="300px" width="250px"></div>`,}//定义全局组件Vue.component('all-zhu', {template: `<div><h1>--------------------------</h1><h1>这个是全局组件</h1><img src="https://pic.netbian.com/uploads/allimg/240410/223535-17127597352d7a.jpg" alt="" height="300px"width="250px"><local></local><local></local><local></local></div>`,data() {return {title: '首页',hobby: ['music', 'running', 'swim']}},methods: {handClick() {alert(this.title);this.hobby[0] = "hong"}},components: {local: {template: `<div><div style="background: rgba(104,255,104,0.7); padding: 5px 10px; border-radius: 5px; margin: 3px 50px 3px 0;">我是局部组件</div></div>`,}}});// 创建 Vue 实例new Vue({el: "#app",data:{},components:{loacllzhu // 在 Vue 实例中注册局部组件}});
</script></body>
</html>

image-20240428211102357

  • 第二种的注册组件的方法

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><!--  bootstrap  --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"><!--  Vue  --><script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script><!--  axios  --><script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<div id="app"><all-zhu></all-zhu><hr><h1>这个是局部组件</h1><local-lzhu></local-lzhu>
</div><script>// 定义局部组件const localLzhu = {template: `<div><img src="https://pic.netbian.com/uploads/allimg/200604/001849-15912011295e8a.jpg" alt="" height="300px" width="250px"></div>`}// 创建 Vue 实例new Vue({el: "#app",components: {'all-zhu': {template: `<div><h1>--------------------------</h1><h1>这个是全局组件</h1><img src="https://pic.netbian.com/uploads/allimg/240410/223535-17127597352d7a.jpg" alt="" height="300px"width="250px"><local-lzhu></local-lzhu><local-lzhu></local-lzhu><local-lzhu></local-lzhu></div>`,data() {return {title: '首页',hobby: ['music', 'running', 'swim']}},methods: {handClick() {alert(this.title);this.hobby[0] = "hong"}}}}});// 在 Vue 实例中注册局部组件Vue.component('local-lzhu', localLzhu);
</script></body>
</html>

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

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

相关文章

【移动云】5G时代——你我的智慧云

文章目录 0.引言1.移动云简介2.移动云学习资源3.移动云产品介绍3.1 大数据—数据可视化&#xff08;DataInsight&#xff09;3.1.1 应用场景3.1.2 产品基本架构3.1.3 优势 3.2 云主机ECS3.2.1 云主机ECS优势3.2.2 云主机主要功能3.2.3 应用场景 4.移动云解决方案4.1 热门案例1&…

男士内裤哪个品牌好穿舒服?适合夏季的五款男士内裤推荐

很多男性对内裤的不重视&#xff0c;似乎是与生俱来的&#xff0c;错把“糙汉”当“硬汉”。特别是一直以来都由女性包办内裤的男士&#xff0c;经常是不合适也勉强穿着。即使是生活条件不断提升的今天&#xff0c;还是有不少男士表面光鲜亮丽&#xff0c;对内裤反而不太讲究。…

解读:Mint Blockchain 最新路线图,释放 NFT 生态重磅发展计划

作者&#xff1a;Mint Ecosystem 关于 Mint Blockchain&#xff1a;Mint Blockchain 是一个以太坊原生 L2 网络&#xff0c;核心是发展 NFT 生态和产业&#xff0c;促进 NFT 领域的 Mass Adoption 产生。MintCore 团队致力于将 Mint Blockchain 打造成一个围绕服务 NFT 资产的…

SqlServer 2016 2017 2019安装失败-无法找到数据库引擎启动句柄

SqlServer 2016 2017 2019安装失败-无法找到数据库引擎启动句柄 出现以上问题的原因是因为系统账户无法操作数据库引擎服务。需要调整权限。 按照以下步骤解决&#xff0c;成功完成安装&#xff0c;已亲测&#xff1a; 1、如果您已经安装了相同版本的SQL Server&#xff0c;…

数据结构算法题day03

数据结构算法题day03 题目 题目 2.设计一个高效算法&#xff0c;将顺序表L的所有元素逆置&#xff0c;要求算法的空间复杂度为O(1)算法思想&#xff1a; 1、常规的解法&#xff1a; Void reverse (sqlist &L){Elemtype temp; //辅助变量for(i 0,i < L.length; i){temp…

基于NAMUR开放式架构(NOA)的工业设备数据采集方案

一 NAMUR开放式架构 传统自动化金字塔结构的优越性在过去许多年里已被证明。然而&#xff0c;传统的自动化金字塔在获取和利用对物联网和工业4.0有价值的数据方面却存在一定挑战。这是因为传统系统通常是封闭的&#xff0c;数据访问受到限制&#xff0c;难以集成到新的数字化解…

剖析【C++】——类与对象(中)——小白篇—超详解

目录 1.类的6个默认成员函数&#xff1a; 1. 默认构造函数&#xff08;Default Constructor&#xff09; 2. 析构函数&#xff08;Destructor&#xff09; 3. 拷贝构造函数&#xff08;Copy Constructor&#xff09; 4. 拷贝赋值运算符&#xff08;Copy Assignment Operato…

Docker部署后的中文乱码问题

本地和服务器上面生成图片文字多没有乱码&#xff0c;但是服务部署到docker上面就开始出现乱码。排查了一下发现是docker上缺少相应的中文字体&#xff0c;添加字体即可解决。 1.在网站上找到相关资源并下载字体-字体下载-字体下载大全-字体免费下载|字体下载 2.上传到服务器 …

8D和FMEA的关系是什么?——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 在质量管理领域中&#xff0c;8D和FMEA是两个非常重要的工具。它们各自有着独特的作用&#xff0c;但同时又存在着紧密的联系。本文旨在深入探讨8D和FMEA之间的关系&#xff0c;以及它们如何协同工作以提高产品质量和客户满意度。 8D&#x…

电子商务商城B2B2C:JAVA实现的商家间直播带货商城系统概览

电子商务商城&#xff1a;构建全行业全渠道的一体化SaaS解决方案 在数字化转型的浪潮中&#xff0c;企业对于高效、集成的管理系统的需求日益增长。电子商务商城的SaaS云平台应运而生&#xff0c;它旨在为各行各业提供全面的一体化解决方案&#xff0c;无论是门店经营的区域化…

UE5 Cesium2 最新使用地理配准子关卡构造全球场景

参考官方最新教程&#xff1a;Building Global Scenes with Georeferenced Sublevels – Cesium 创建持久关卡&#xff08;主关卡&#xff09; 这里一般包含DynamicPawn、CesiumSunSky 和 Cesium World Terrain 全球场景通用的对象。子关卡的创立&#xff0c;官方教程分为了两…

低代码与人工智能:革新智能客服系统的高效之道

引言 在当前数字化和智能化浪潮的推动下&#xff0c;企业对智能客服系统的需求呈现显著增长。随着客户期望的不断提升&#xff0c;企业需要更加高效、智能和个性化的客户服务解决方案。传统的人工客服方式不仅成本高昂&#xff0c;且难以满足大规模、多样化的客户需求。而智能客…

如何远程访问Redis?

远程访问Redis是一种常见的需求&#xff0c;特别是在分布式系统或跨地域网络中。通过远程访问&#xff0c;我们可以轻松地对远程的Redis数据库进行操作和管理。 天联保障数据安全 对于远程访问Redis的安全性问题&#xff0c;我们可以借助天联来保障数据的安全。天联是一种基于…

免费无限换脸,火了,图片/视频/直播都行!

最强换脸AI工具Facefusion软件在近期更新到了2.6.0版本&#xff0c;带来了一系列的更新和改进&#xff0c;今天为大家分享一下最新的整合包。 Facefusion2.6.0版本介绍 FaceFusion不仅仅是一款换脸软件&#xff0c;它更是一个多功能的数字人和实时直播助手&#xff0c;真正开启…

python Windows电脑设置定时启动程序,定时运行代码

Windows设置定时 一&#xff0c;新建文件txt, .txt改为.bat 路径填exe的路径D:\test\main.py 如下是启动exe,如果运行python代码则写入如&#xff1a;python D:\test\main.py 二&#xff0c;搜索计算机管理 三&#xff0c;点击创建基本任务 填写任意名称 选择什么时候开始…

Element-Plus中表格及分页功能

导入Element-Plus 具体步骤如下&#xff1a;&#xff08;内容参照官网&#xff1a;安装 | Element Plus&#xff09; # 选择一个你喜欢的包管理器# NPM $ npm install element-plus --save# Yarn $ yarn add element-plus# pnpm $ pnpm install element-plus 安装完成后即可…

实现按块复制元素的进阶技巧

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、按块复制元素的重要性 二、使用LED模块创建数组并复制 三、实现按块复制的具体步骤 四…

群晖NAS使用Docker部署WPS Office结 合内网穿透实现远程编辑本地文档

文章目录 1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 wps-office是一个在Linux服务器上部署WPS Office的镜像。它基于WPS Office的Linux版本&#xff0c;通过…

基于微信小程序+ JAVA后端实现的【微信小程序跑腿平台】设计与实现 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称&#xff1a; 《微信小程序跑腿平台的设计与实现》 项目技术栈 该项目采用了以下核心技术栈&#xff1a; 后端框架/库&#xff1a; Java, SSM框架数据库&#xff1a; MySQL前端技术&#xff1a; 微信小程序, HTML…&#xff08;其它相关技术&#xff09; …

工作软件新宠儿

想要让你的工作效率飞起来吗&#xff1f;&#x1f440; 是时候告别那些大众化的工作软件啦&#xff01;今天&#xff0c;我要给大家种草几款不常见的但超级实用的工作软件&#x1f331;&#xff0c;保证让你事半功倍哦&#xff01;&#x1f31f; 1️⃣ 亿可达 它是一款自动化…