组件基础

组件

-Vue里面组件的扩展功能是通过 Vue.extend() 来做扩展的
    -console.log( Vue )  // new Vue( options )
    -console.log( Vue.extend()) // 组件的扩展中的options和 new Vue( options )使用一致               Vue.extend()不进行实例化 也就是不用 new  Vue.extend()

创建组件的两种方式

1、全局组件
    -在所有的Vue实例中都能使用
    -注意:先注册组件,在初始化根实例
2、局部组件

组件的介绍

- Vue.extend() 不会进行实例化
- Vue中组件的使用方式  类似于  标签的使用
- 为了符合H5的规范,我们需要将这些类似于标签一样的内容进行注册 
- 注册的作用是为了使用Vue来进行解析

组件的注册

-全局注册:
    Vue.component(组件的名称,组件配置)
    eg:
        <script>
            const Hello = Vue.extend({
                // template选项是为了确定一个模板,模板中写的就是jsx
                template: '<div> Hello Component</div>'
            })

                // 组件用大写表示,作用是为了区分原生html提供的标签

                Vue.component('Hello',Hello)

                new Vue({
                    el: '#app'
                })

                new Vue({
                    el: '#root'
                })
        </script>
-局部注册:
    写在实例内部的
    eg:
        <script>
            const Hello = Vue.extend({
                template:'<div> Hello Component </div>'//template选项是为了确定一个模板
            })

            new Vue({
                el:'#app',
                components:{
                    'Hello' : Hello
                }
            })

            new Vue({
                el:'#root',
                components:{
                    'Hello':Hello
                }
            })
                
        </script>

组件的发展

-选项可以不适用Vue.extend() 来得到,可以直接写在注册的配置项中
比如:Vue.component('Hello',options)
全局注册简写:
eg:
    Vue.component('Hello',{
        template: '<div> nihao </div>'
    })
    new Vue({
        el:'#app',
    })
    new Vue({
        el:'#root',
    })
局部注册简写:
eg:
    new Vue({
        el:'#app',
        components:{
            'Hello':{
                 template:'<div> nihaoo </div>'
            }
        }
    })
    new Vue({
        el:'#root',
        components:{
            'Hello':{
                template:'<div> nihao</div>'
            }
        }
    })

组件的命名:

-单个单词首字母大写
-两个单词首字母大写
-两个单词小写之间用-连接

eg:

组件的规则

- html中有些特殊的标签,直接父子关系的标签
- 比如:table tr td / ul li / ol li / dl dt dd / select option
- 这类有直接父子关系的标签,是不能直接用组件代替的。
- 如果代替了,这类型的标签父级会将组件排斥在外面。
解决办法、:
    ***is属性
    is属性的作用是将一个绑定的容器解析为一个组件的模板。

    eg:
    <body>
        <div id="app">
           
            <table>
                <tr>
                    <td>1</td>
                    <td>1</td>
                    <td>1</td>
                </tr>
            </table>   
            <!-- <Hello></Hello> -->
            <tr is = " Hello "></tr>
        </div>
    </body>
    <script>
        Vue.component('Hello',{
            template:
            `
            <tr>
                <td>4</td>
                <td>5</td>
                <td>6</td>
            </tr>
            `    
        })
        new Vue({
            el:'#app',
        })
    </script>
 ***** is属性-动态组件  (可以改变的组件)
 ----vue中提供了一个叫 component 的动态组件
 -动态缓存:
    deactived 正在使用应用
    inactived 将应用/组件 放到后台,
**<keep-alive></keep-alive>组件的好处:类似于手机应用的后台

eg:
    <link src="./is属性-动态组件.html">
***template标签:
特点:
    1、如果在实例范围内书写template标签,渲染中是不会出现该标签
    2、template标签在实例范围外可以直接显示
    3、组件的模板可以放在实例范围外书写,但是会造成渲染之后的template标签还会显示在文件中。
    4、组件的template模板中要求根源是唯一
eg:
{{info}}

你好

### 组件中的data选项 1、组件是一个独立的个体,它拥有自己的数据 2、为了避免外界的干扰,组件的数据是需要有独立作用域的 3、除了根实例外,组件的data选项都是一个函数 4、组件的数据在组件的模板中相当于一个全局变量 思考:为什么data选项要返回一个全局对象? 因为Vue的深入响应式原理要求每一个对象都要进行getter和setter的设置 eg:

{{money}}

})

组件的嵌套

    定义:组件嵌套就是将子组件以标签化的形式放到父组件的模板中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值