vue创建组件语法

79 阅读1分钟

局部组件

<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <custom-part1></custom-part1>
    </div>
    <template id="Local1">
        <div>局部组件</div>
    </template>
</body>
<script type="text/javascript">
    // 局部组件
    const part1 = {
        template: '#Local1',
        data() {
            return {}
        }
    }
    new Vue({
        el: '#app',
        components: {
            'custom-part1': part1,
        }
    })
</script>
</html>

全局组件

<head>
    <meta charset="UTF-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
         <custom-global1></custom-global1>
    </div>
    <template id="Global">
        <div>全局组件</div>
    </template>
</body>
<script type="text/javascript">
    //全局组件
    Vue.component('custom-global1', {
        template: '#Global',
        data() {
            return {}
        }
    })
    new Vue({
        el: '#app',
    })
</script>
</html>

局部组件,extend 转为构造函数, 然后手动调用 $mount 转为真实Dom实例化

<head>
    <meta charset="UTF-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <custom-part2></custom-part2>
</body>
<script type="text/javascript">
 //局部组件
    //extend 转为构造函数, 然后手动调用 $mount 转为真实Dom实例化
    var part2 = Vue.extend({
        template: "<div>局部组件2</div>",
        data: function () {
            return {
            }
        }
    });
    new part2().$mount('custom-part2');
</script>
</html>

extend传参

<head>
    <meta charset="UTF-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <custom-part3></custom-part3>
</body>
<script type="text/javascript">
    var part3 = Vue.extend({
        template: "<div>{{text}}</div>",
        data: function () {
            return {}
        },
        props: ['text']
    });
    new part3({ propsData: { text: '局部组件3传参' } }).$mount('custom-part3');
</script>
</html>

extend与component配合

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <div id="app">
        <extend-component></extend-component>
    </div>
</body>
<script type="text/javascript">
    // extend与component配合
    var part = Vue.extend({
        template: "<div>extend与component配合</div>",
        data: function () {
            return {}
        }
    })
    // 配合component
    Vue.component("extend-component", part);
    new Vue({
        el: '#app',
    })
</script>
</html>