Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Vue_02】 组件化开发

【Vue_02】 组件化开发

作者头像
用户8250147
发布于 2021-02-04 06:45:27
发布于 2021-02-04 06:45:27
32900
代码可运行
举报
文章被收录于专栏:黑马黑马
运行总次数:0
代码可运行

一、组件注册

1. 全局组件

1.全局组件注册后,任何 Vue 实例都可以使用 2.组件其实也是一个 Vue 实例,因此它在定义时也有:data、methods、生命周期函数等 3.不同的是组件不会与页面的元素绑定,否则就无法复用了,因此没有 el 属性。 4.但是组件渲染需要 html 模板,所以增加了 template 属性,值就是 HTML 模板,模板中只能有一个根标签 5.data 必须是一个函数,不再是一个对象。因此组件复用时各个组件之间互补影响。

语法 Vue.component("组件名称", { })

示例

2. 局部组件

局部组件只有在当前注册它的 Vue 实例中使用

语法

示例

二、组件之间的通信

1. 父向子通信

父组件发送的形式是以属性的形式绑定值到子组件身上。 然后子组件用属性 props 接收 在 props 中使用驼峰形式,html 中需要使用短横线的形式字符串形式的模板中没有这个限制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
     <first :str="msg" :tit="title"></first>
 </div>
     
 <script>
     var first = {
         props: ["str","tit"],
         template:'<h1>{{tit}} {{str}}</h1>',
         data(){
             return {
                 count:0
             }
         }
     }

     var app = new Vue({
         el:"#app",
         data: {
             msg: "父向子通信",
             title: "No.1"
         },
         components: {
             first
         }
     });
 </script>
2. 子向父通信

子组件不能直接向父组件传值,我们可以通过操作父组件的方法来实现通信 子组件用 $emit() 触发事件 父组件使用 v-on 来监听事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
    父组件:{{num}}
    <!-- 父组件监听子组件 add-num 事件,使用 add 方法处理此事件,可以使用 add($event) 来接收参数 -->
    <first :num="num" @add-num="add"></first>
</div>
    
<script>
    var first = {
        props: ["num"],
        template:'<div> 子组件:{{num}} <button @click="fun">加</button> </div>',
        methods: {
            fun() {
            	<!-- 子组件用 $emit("事件名称", "参数(可无)") 触发事件 add-num -->
                this.$emit("add-num");
            }
        }
    }

    var app = new Vue({
        el:"#app",
        data: {
           num: 10
        },
        components: {
            first
        },
        methods: {
            add() {
                this.num ++
            }
        }
    });
</script>
3. 兄弟间通信

兄弟之间传递数据需要借助于事件中心,通过事件中心传递数据。事件中心 var hub = new Vue() 传递数据方,通过 hub.$emit(方法名,参数) 触发事件 接收数据方,通过在 mounted 钩子中用 hub.$on(方法名,(参数)=> {}) 监听事件 销毁事件通过 hub.$off(方法名) 进行销毁,销毁之后无法进行传递数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
         <first></first>
         <last></last>
 </div>
         
 <script>
     // 事件中心
     var hub = new Vue();

     // 组件1:first
     Vue.component("first", {
         template:'<div> fist 组件:{{num}} <button @click="fun">last组件+1</button> </div>',
         data() {
             return {
                 num: 0
             }
         },last
         methods: {
             fun() {
                 hub.$emit("last-event",1);
             }
         },
         mounted () {
             // 此处需要使用箭头函数,否侧 this 不代表组件
             hub.$on("first-event",(value) => {
                 this.num += value;
             })
         }
     });

     // 组件2:last
     Vue.component("last", {
         template:'<div> last 组件:{{num}} <button @click="fun">first组件+2</button> </div>',
         data() {
             return {
                 num: 0
             }
         },
         methods: {
             fun() {
                 hub.$emit("first-event",2);
             }
         },
         mounted() {
             hub.$on("last-event",(value) => {
                 this.num += value;
             })
         }
     });

     var app = new Vue({
         el:"#app"
     });
 </script>      
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue组件化开发
1)、我们希望尽可能多的重用代码。   2)、自定义组件的方式不太容易(html、css、js)。   3)、多次使用组件可能导致冲突。   4)、Web Components通过创建封装好功能的定制元素解决上述问题。   5)Vue部分实现了上述Web Components规范。
别先生
2020/04/24
3.2K0
Vue组件化开发
vue2.0 组件通信
Vue 采用基于组件的开发方式,那么组件之间的通信必不可少:比如父组件要给子组件传递数据,子组件将它内部发生的事情告知给父组件,因此定义一个良好的接口尽可能将组件解耦显得尤为重要,这保证不同的组件可以在相对独立的环境中开发测试,而且更方便阅读理解以及组件复用。
李振
2021/11/26
9600
vue2.0 组件通信
Vue组件之间传值
1.Vue组件之间传值 1.1父组件向子组件传值   1.组件内部通过props接收传递过来的值   2.父组件通过属性将值传递给子组件 父组件发送的形式是以属性的形式绑定值到子组件身上。 然后子组件用属性props接收 在props中使用驼峰形式,模板中需要使用短横线的形式字符串形式的模板中没有这个限制 <div id="app"> <div>{{pmsg}}</div> <!--1、menu-item 在 APP中嵌套着 故 menu-item 为 子组件
梨涡浅笑
2022/01/06
1.3K0
Vue组件之间传值
Vue 组件化开发
  将实现页面某一部分功能的结构、样式和逻辑封装成为一个整体,使其高内聚,低耦合,达到分治与复用的目的。在前端范畴,我们可以用下面的这张图来简单地理解组件化:
Demo_Null
2020/09/28
1.9K0
Vue 组件化开发
VUE-组件化
在大型应用开发的时候,页面可以划分成很多部分。往往不同的页面,也会有相同的部分。例如可能会有相同的头部导航。
cwl_java
2020/02/11
7700
vue组件间通信
组件是 vue 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。我们需要使用特定的方式来实现组件间的数据通信,接下来让我们一个个介绍这几种类别的组件通信是如何实现的。
江拥羡橙
2022/11/15
1.2K0
vue组件间通信
Vue组件之间传值
父组件向子组件传值 父组件发送的形式是以属性的形式绑定值到子组件身上。 然后子组件用属性props接收 在props中使用驼峰形式,模板中需要使用短横线的形式,字符串形式的模板中没有这个限制 <div id="app"> <div>{{pmsg}}</div> <!--1、menu-item 在 APP中嵌套着 故 menu-item 为 子组件 --> <!-- 给子组件传入一个静态的值 --> <menu-item title=
星辰_大海
2020/12/07
1.5K0
Vue组件之间传值
Vue 学习笔记 —— 组件化开发 (三)
我们在 Vue 实例中添加 components 属性,在这里我们就可以自定义自己的局部组件,使用方式和全局组件的差别不大
Gorit
2021/12/08
9790
Vue 学习笔记 —— 组件化开发 (三)
来吧!一文彻底搞定Vue组件!
组件是什么呢,了解组件对象的分析,Vue组件中的data属性,props传递数据的原理到底是什么。
达达前端
2019/12/16
1K0
来吧!一文彻底搞定Vue组件!
前端成神之路-vue03
组件 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素,封装可重用的代 组件注册 全局注册 Vue.component(‘组件名称’, { }) 第1个参数是标签名称,第2个参数是一个选项对象 全局组件注册后,任何vue实例都可以用 组件基础用 <div id="example"> <!-- 2、 组件使用 组件名称 是以HTML标签的形式使用 --> <my-component></my-component> </div> <script>
海仔
2021/03/20
6.1K0
04 . Vue组件注册,组件间数据交互,调试工具及组件插槽介绍及使用
vue组件 组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素,封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的
iginkgo18
2020/11/24
1.6K0
04 .  Vue组件注册,组件间数据交互,调试工具及组件插槽介绍及使用
Vue学习-组件化开发
将一个页面拆分成一个个小的功能块,每个功能块完成自己独立的功能,这样在之后的页面维护和管理就会方便许多。
花猪
2022/02/17
1.6K0
Vue学习-组件化开发
Vue_Study05
vue devtools 调试工具,相对于浏览器自带的开发者工具对于调试和查看vue 的项目和demo 提供更强大的调试功能,在对数据绑定的检验,标签结构等方面的查看检验调试更方便。
Echo_Wish
2023/11/30
4040
Vue_Study05
vue组件详解(三)——组件通信
组件之间通信可以用下图表示: 组件关系可分为父子组件通信、兄弟组件通信、跨级组件通信。 一、自定义事件 当子组件需要向父组件传递数据时,就要用到自定义事件。 子组件用$emit ()来触发事件,父组件
柴小智
2018/04/10
1.3K0
vue组件详解(三)——组件通信
理解Vue中的组件化开发
主要从ui界面上进行划分。例如前端的组件化,方便ui组件的调用。类似于以前的导航栏。
代码天才TTT
2023/08/01
7220
Vue进阶——组件化开发
类似微服务的软件架构,在前端开发中,一个页面的实现往往十分复杂,我们可以将一个页面划分为多个块,每个块负责相应的功能,块之间通过通信来交互。这样的前端开发方式正是组件化开发,一个页面是一个大的组件树,其下又划分有很多小的组件。这样一来,不仅降低了一次开发的难度,而且避免了重复造轮子,组件可以灵活的嵌入其他的Vue项目中进行使用。
matt
2022/10/25
1.2K0
Vue进阶——组件化开发
Vue 相关学习笔记(二)
常用特性应用场景 1 过滤器 Vue.filter 定义一个全局过滤器 <tr :key='item.id' v-for='item in books'> <td>{{item.id}}</td> <td>{{item.name}}</td> <!-- 1.3 调用过滤器 --> <td>{{item.date | format('yyyy-MM-dd hh:mm:ss')}}</td>
用户6808043
2022/02/24
5.7K0
Vue全家桶之组件化开发
掘金 | https://juejin.im/user/5a16e1f3f265da43128096cb
达达前端
2020/01/15
4760
Vue全家桶之组件化开发
vue3.0快速上手教程之vue--组件02
props是自定义属性,组件之间可以通过props属性去自定义一些属于自己的属性,并通过这个属性来进行组件之间的数据传输。
张哥编程
2024/12/13
3570
vue3.0快速上手教程之vue--组件02
Vue组件化 模板 语法糖 函数 父子组件通信
支持:String、Number、Boolean、Array、Object、Date、Function、Symbol
有勇气的牛排
2023/06/25
2570
相关推荐
Vue组件化开发
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验