VUE学习:vue基础10————组件:组件的使用

本文详细介绍了Vue.js中的组件创建和使用方法,包括全局组件的定义、简写形式以及私有组件的实现。通过示例展示了如何通过`Vue.extend()`和直接对象方式创建组件,并强调了组件模板必须有一个根元素的要求。同时,提到了组件名称的规范和私有组件的局部注册。
摘要由CSDN通过智能技术生成

提示:
本文为VUE栏目:VUE学习:vue基础10————组件:组件的使用

VUE学习:vue基础10————组件:组件的使用


前言

本文vue框架中组件相关。


提示:以下是本篇文章正文内容,下面案例可供参考

组件

示例:创建全局组件模板

<body>
<div id="app" style="border: 1px solid tomato">
    <wuyanzu>吴彦祖</wuyanzu>
    <jj>wyz啊</jj>
</div>

</body>
<script>
    /*创建全局组件模板*/
    let wyz=Vue.extend({
       template:'<h3>吴彦祖</h3>'
    });
    // 挂载模板到组件对象上
    Vue.component('jj',wyz);
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    });
</script>

**吴彦祖**是无效的。

挂载模板到组件对象上**wyz啊**,输出h3标签包含的模块

在这里插入图片描述

简写形式:

简写一

<body>
<div id="app" style="border: 1px solid tomato">
    <zwj></zwj>
</div>
</body>
<script>
    Vue.component('zwj',Vue.extend({
        template:'<h4>张无忌</h4>'
    }));
  
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    });
</script>

简写二

不使用extend函数也能创建全局组件

<body>
<div id="app">
    <test2></test2>
</div>
</body>
<script>
    // 不使用extend函数也能创建全局组件
    Vue.component('test2',{
        template:'<h3>全局组件2</h3>'
    });


    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {},
        

    });
</script>

HTML中规定标签名不区分大小写,推荐标签名全小写,如果标签名多个单词组成,中间用横线隔开。

<body>
<div id="app" style="border: 1px solid tomato">
    <my-test></my-test>
    <my--test></my--test>
</div>

<div id="app2">
    <zwj></zwj>
    <test2></test2>
    <login></login>
</div>
</body>
<script>
    
    Vue.component('myTest',Vue.extend({
        template:'<h4>张三丰</h4>'
    }));

    Vue.component('my-Test',Vue.extend({
        template:'<h4>张翠山</h4>'
    }));
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    });
</script>

重点:如果模板输出的内容为多个标签组成,则这多个标签一定要有一个父级标签。

自定义组件的template属性指向的模板内容,必须只能有一个根元素(只能返回一个标签,但是该标签内可以存在多个标签)

<body>
<div id="app" style="border: 1px solid tomato">
    <test2></test2>
</div>
</body>
<script>
    Vue.component('test2',Vue.extend({
        template:'<div><p>p1</p><p>p2</p></div>'
    }));
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    });
</script>

私有组件

<body>
<div id="app" style="border: 1px solid tomato">
    <test2></test2>
    <login></login>
</div>

<div id="app2">
    <test2></test2>
    <login></login>
</div>
</body>
<script>
   
    /*重点:如果模板输出的内容为多个标签组成,则这多个标签一定要有一个父级标签。*/
    /*自定义组件的template属性指向的模板内容,必须只能有一个根元素(只能返回一个标签,但是该标签内可以存在多个标*/
    Vue.component('test2',Vue.extend({
        template:'<div><p>p1</p><p>p2</p></div>'
    }));

    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    });
    let vm2 = new Vue({
        el: "#app2",
        data: {},
        methods: {},
        components:{
            login:{
                template:"<h1>我是私有组件</h1>"
            }
        }
    });
</script>

login标签只在app2中被实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值