Vue基础学习 --- 全局组件与局部组件

时间:2021-04-11 13:01:21

组件分为

  • 全局组件

  • 局部组件

    全局组件

  • // 语法---Vue.component('组件名', {组件参数})
    Vue.component('com1', {
    template: '<button @click="count++">你点了我{{count}}次</button>',
    data() {
    return {
    count: 0
    }
    }
    })

    示例:

    <!DOCTYPE html>
    <html lang="en"> <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>我是测试vue</title>
    <!-- 01-引入vue -->
    <script src="./node_modules/vue/dist/vue.js"></script>
    </head> <body>
    <!-- 02创建一个div,ID为app -->
    <div id="app"> <!-- 02-使用组件 --><com></com>
    </div>
    <script>//01-创建全局组件
    Vue.component('com', {
    template: '<button @click="add">你点击了我{{count}}次</button>',
    data() {
    return {
    count: 0
    }
    },
    methods: {
    add() {
    this.count++
    }
    }
    })
    const vm = new Vue({
    el: '#app',//对应的操作区,必填
    data: {
    msg: ''
    },//数据
    methods: {}//方法
    });
    </script>
    </body> </html>

    说明:

    • 组件没有el参数, 原因是组件不会和具体的页面元素绑定

    • 组件必须有template参数, 原因是组件需要渲染页面, template就是需要渲染的html

    • 组件也是一个Vue的实例, 所以在组件中也有data/methods等

    • data必须是一个函数, 并返回一个对象

    局部组件

    1. 组件的html部分是在template标签中渲染

    2. 组件的js部分就是组件参数(对象)

    示例:

    <!DOCTYPE html>
    <html lang="en"> <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./node_modules/vue/dist/vue.js"></script>
    </head> <body>
    <div id="app">
    <!-- 04-使用组件 -->
    <son></son>
    <abc></abc>
    </div> <!-- 02-局部组件的样式在这里实现 -->
    <template id="jubu">
    <div>
    <button @click="count++">你点击了{{count}}次</button>
    </div>
    </template> <script>
    //01-定义局部组件
    const jubu = {
    template: '#jubu',
    data() {
    return {
    count: 0
    }
    },
    } const vm = new Vue({
    el: '#app',
    data: {},
    methods: { },
    //03- 挂载局部组件
    components: {
    // 定义组件---组件名:组件参数对象
    son: jubu,
    abc: jubu
    }
    });
    </script>
    </body> </html>