Vue 组件化开发

组件化开发

思想:标准、分治、组合、重用

 

1、组件注册

Vue.component('组件名', {
    data: function() {
        return {
            组件数据
        }
    },                          // 数据要以函数的形式
    template: '组件模板内容',    // 必须是单个根元素
    methods: 组件内部方法
})

其中最大的不同是:数据要写成函数的形式,形成闭包,使每个组件的数据都是独立的;

模板内容如果比较复杂,可以用 ES6语法 - 模板字符串的形式来写(反引号里面加正常标签);

组件使用: <组件名> </组件名>

 

组件命名可以用 “-” 连接(推荐),也可以用驼峰命名法,两种命名可相互转化;

但如果驼峰式命名组件,那么在使用组件时,只能在字符串模板中使用驼峰式的名字,在普通标签模板(body)中必须转化为短横线的名字。

 

 

局部组件

在 Vue 实例中,引入 component 属性:

// 在外部定义
var 组件A = {
    data: function() {
        return {...}
    },                
    template:... 
};

var 组件B = ...;

var vm = new Vue({
    el: '#v',
    components: {
        '局部组件-A': 组件A,
        '局部组件-B': 组件B,
        ...
    }
})

使用: <局部组件-A/B> </局部组件-A/B>              注意命名、使用时名字的形式。

 

局部组件只能在注册它的父组件中使用,在其他全局组件中不能使用;

自定义指令、过滤器也有类似的局部特性。

 

 

2、调试工具

展现组件的层次关系(父子、兄弟),调试数据

Devtools

 

 

3、组件间数据交互

父组件向子组件传递 —— props

(1)静态方式,父组件以属性的方式传出固定值,子组件内部通过 props 接收;

(2)动态方式,父组件的 data 中写好数据,子组件标签上绑定属性,并且子组件内部通过 props 接收;

静态和动态可以同时使用,传递多个数据。

props 是单向数据流的处理方式。

 

props 属性名规则:

如果 JS 的 props 中,以驼峰形式写属性名;则在 HTML 标签中,要以 -短横线 的形式

而在字符串模板(template)中,没有限制。

 

props 属性值支持多种类型:字符串、数值、布尔、数组、对象;

绑定属性时,最好属性前面加上冒号,保持数值和布尔的数据类型,不加冒号会变成字符串。

 

子组件向父组件传递 —— 自定义事件

子组件触发自定义事件,同时携带参数,也就是传递的数据;

父组件中,绑定事件来监听,用 $event 接收传递过来的参数。

 

兄弟组件之间传递 —— 事件中心

  • 创建一个 Vue 实例对象作为事件中心:

                          var eventHub = new Vue();

  • 进行事件监听和事件销毁:

                          eventHub.$on ('事件名', 事件函数);

                          eventHub.$off ('事件名');

  • 触发事件,可以携带参数

                          eventHub.$emit ('事件名', 参数..);

 

 

4、组件插槽

用于父组件向子组件传递标签中间的内容,方便内容的修改;

  1. 创建一个子组件,其中插槽位置   <slot></slot>
  2. 在 html 父组件中使用子组件,子组件标签中间的内容就会传递到插槽中。

 

具名插槽

为了区分不同的插槽,可以给插槽命名:   <slot  name='插槽名' ></slot> 

使用时则在标签中加上     <p  slot="插槽名"></p> ;

没有匹配到的内容就分配到未命名的插槽中。

 

作用域插槽

父组件对子组件的内容进行加工处理

 

 

11.30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值