不用vue-cli 创建vue组件

不使用vue-cli 创建组件

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>

2.全局组件

<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-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>

3.动态组件extend

<html lang="en">
<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">
    var part2 = Vue.extend({
        template: "<div>局部组件2</div>",
        data: function () {
            return {
            }
        }
    });
    new part2().$mount('custom-part2');
</script>
</html>

4.extend传参方式

<html lang="en">
<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>

5.extend与component配合使用

<html lang="en">
<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">
    var part = Vue.extend({
        template: "<div>extend与component配合</div>",
        data: function () {
            return {}
        }
    })
    Vue.component("extend-component", part);
    new Vue({
        el: '#app',
    })
</script>
</html>

6.组件函数调用

<body>
    <div id="app">
        <custom-global1></custom-global1>
    </div>
    <template id="Global">
        <div @click='bb()'>全局组件</div>
    </template>
</body>
<script>
    var bus = new Vue()
    bus.$on('text', function (val) {
        console.log(val)
    })
    Vue.component('custom-global1', {
        template: '#Global',
        methods: {
            bb() {
                bus.$emit('text', 2)
            },
        }
    })
    let vm = new Vue({
        el: '#app',
    })
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值