什么是组件?

组件(Component)是Vue js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue js 的编译器为它添加特殊功能。在有些情况下,组件也可以表现为用is 特性进行了扩展的原生HTML元素。

所有的Vue组件 同时也都是Vue的实例,所以可接受相同的选项对象(除了一些根级特有的选项)并提供相同的生命周期钩子。

vue组件分为:
局部组件:只能在el定义的范围内使用,
全局组件:可以在随意地方使用
父子组件:之间的传值问题。父子(属性通信)、子父(事件触发)、兄弟通信(EventBus)

template:’’ 组件要显示的内容
component('',) 注册组件。
data数据属性:写函数;
接收两个参数:
第一个参数(组件名称):用来使用的标签
第二个参数(组件的描述对象):标识要显示

全局组件注册方式: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"><!-- 2.使用组件  类似html标签 --><my-component></my-component></div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>//1.组件名为"conter"; 2.data 写函数; 3.template 写组件的内容(元素和触发的事件)Vue.component("my-component",{   data:function(){return {count:0}},//template 是模板的意思,在 html 里面是一个可以同时控制多个子元素的父元素。在这里定义了组件的内容template:`<button v-on:click="count++">点击计算点击次数:{{count}}次</button>`,});var vm = new Vue({el: "#app",data:{},})
</script>
</html>

局部组件注册方式,直接在Vue实例里面注册


<!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"><child-component></child-component></div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>var child={template:`<button @click='add2'>我是局部组件:{{m2}}</button>`,data:function(){return {m2:1}},//定义方法methods:{add2:function(){this.m2++}}};var vm = new Vue({el: "#app",components:{"child-component":child}})
</script>
</html>

具名插槽

组件的 template 里面定义好插槽(插座) 对于这种有名称的插槽一般我们叫做具名插槽(或者有名插槽)。
对于没有取名称的插槽一般我们叫做匿名插槽(或者叫做 default 默认插槽)


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.p1 {font-size: 24px;}</style>
</head><link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/2.0.1/jquery.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js"></script><body><div id="app"><vue-pannel><p slot="main">身体信息</p><h3 slot="footer">底部信息</h3><h3 slot="header">头部信息</h3><p>其他的内容,没有任何一个与之对应的具名插槽,则该内容会被放置在 default插槽里面,如果有的 default插槽的话。如果在 template 里面没有事先定义好 default 插槽,则该段内容会被丢弃</p></vue-pannel></div></body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>//全局组件Vue.component('vue-pannel', {//组件的 template 里面定义好插槽(插座) 对于这种有名称的插槽一般我们叫做// 具名插槽,或者叫做有名插槽。 对于没有取名称的插槽一般我们叫做匿名插槽(或者叫做 default 默认插槽)//slot插槽 插座template: `<div><p style="color:red;font-size:30px;"><b>全局组件</b></p><slot name="header"></slot><slot name="main"></slot><slot name="footer"></slot><slot name="default"></slot><slot></slot></div>`,});// 局部组件const MyComponent ={template: `<div><p style="color:red;font-size:30px;"><b>局部组件</b></p><slot name="header"></slot><slot name="main"></slot><slot name="footer"></slot><slot name="default"></slot><slot></slot></div>`,}var vm = new Vue({el: "#app",// 局部组件 需要在Vue实例中注册components:{"vue-pannel":MyComponent}})
</script>
</html>

component组件相关推荐

  1. Salesforce Lightning开发学习(二)Component组件开发实践

    lightning的组件区分标准组件.自定义组件和AppExchange组件.标准组件由SF提供,自定义组件由developer自行开发,AppExchange组件由合作伙伴建立.下面我们写一个简单的 ...

  2. 浅谈Vue内置component组件的应用场景

    官方的说明 渲染一个"元组件"为动态组件.依 is 的值,来决定哪个组件被渲染. <!-- 动态组件由 vm 实例的属性值 `componentId` 控制 --> & ...

  3. ECS之Component组件

    洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,最近在跟着大智学习DOTS. Entity之后,咱们来到了Component组件.Component是ECS架构的三个基本元素之 ...

  4. Java单元测试实践-11.Mock后Stub Spring的@Component组件

    Java单元测试实践-00.目录(9万多字文档+700多测试示例) https://blog.csdn.net/a82514921/article/details/107969340 1. Sprin ...

  5. component组件中的is属性居然有大用?

    component组件中的is属性的用法(动态组件渲染) 因为在无序列表中直接放置组件会导致渲染出来的DOM会被放置在无序列表的外层,所以需要通过使用li标签并通过is属性来渲染相应的组件,这样渲染出 ...

  6. 《UnityAPI.Component组件》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+GetComponent+SendMessage+Tag+立钻哥哥++OK++)

    <UnityAPI.Component组件> 版本 作者 参与者 完成日期 备注 UnityAPI_Component_V01_1.0 严立钻 2020.05.26 #<UnityA ...

  7. 【愚公系列】2022年02月 微信小程序-Component组件的扩展

    文章目录 一.Component组件的扩展 二.使用扩展 三.案例解析 一.Component组件的扩展 // behavior.js module.exports = Behavior({defin ...

  8. 【贪玩巴斯】Unity3D初学圣经(三)—— unity中的基础概念——scene场景,component组件,assets文件夹和Material材质,Mesh Renderer与shader

    [贪玩巴斯]Unity3D初学圣经 三-- unity中的基础概念--scene场景,component组件与assets文件夹和Material材质以及Mesh Renderer 和 shader ...

  9. Component组件基本概念

    Component组件的必备元素 1.装饰器:@Component() 用来告知Angular如何处理TypeScript类,包括多个属性,属性值叫做原数据,Angular框架根据原数据值渲染组件并执 ...

最新文章

  1. “零成本”建设数据中心机房容灾方案
  2. VSCode配置 Debugger for Chrome插件
  3. php在数据库中上传图片格式,如何上传图片并在php中保存数据库中的URL
  4. 开源自动化配置管理工具Puppet入门教程
  5. easyUI之ComboBox(下拉列表框)
  6. CTF中基本的Xor解密操作
  7. Java基础学习笔记二十四 MySQL安装图解
  8. 武汉涉密信息系统集成资质介绍
  9. @Primary注解在spring中的使用
  10. NOIP2010导弹拦截
  11. Python 数据获取(四)—— BeautifulSoup获取小说内容
  12. 海信在CES宣布推出75英寸到100英寸的全系全色激光电视产品
  13. a++与++a同a--与--a代码拆分
  14. IBM DB2 学习笔记:关系模型、基本概念、数据库实例基本操作、数据库对象
  15. 【Vim】基本操作及命令集详解
  16. python执行定时任务
  17. android 逐行显示 动画,在ImageView android中显示隔行扫描(逐行扫描)图像
  18. Matlab R2022a安装
  19. js动态删除表格中的某一行
  20. PHP实现基于文本的莫斯电码生成器

热门文章

  1. mac下mysql修改密码
  2. VMware虚拟机安装Linux教程(CentOS7)
  3. 使用c语言实现复数运算的程序,用C语言实现的复数运算程序设计
  4. 碳排放权、碳交易日度数据分部门、能源碳排放面板数据
  5. QT笔记——临时的悬浮窗口
  6. How to deal with interlaced video
  7. iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏(教程含源码)
  8. 程序员的工资大概多少?
  9. Opencv中BGR、YUV、YUV_I420\NV12分析
  10. 微信小程序实现商城案例(赋源码)