局部组件的创建

相比于全局组件在全局中定义:
image.png
直接与Vue对象平级,局部组件需要在Vue对象下创建,而局部组件时在Vue对象内部创建的。

相比于全局组件:
image.png

局部组件定义格式如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <itembox></itembox>
        <itembox></itembox>
    </div>
</body>
</html>
<script>
    new Vue({
        el:"#app",
        data:{
    
        },
        methods:{
    
        },
        components:{
            itembox:{
                template:`
                <div>
                    <h1>冒险岛</h1>
                    <h2>幻影</h2>
                </div>
                `
            }
        }
    })
</script>
  • 26-35行定义了局部组件,局部组件与data、el、methods平级

    • 在components内部可以定义多个组件
    • 第27行定义了一个名为itembox的组件
    • 第28行为组件封装的代码:template
  • 第12、13行调用了局部组件

    注意:局部组件封装的代码也需要在一个共同的父标签下,如上方代码块的29、32行div标签

测试页面:
image.png
可以发现成功在绑定的标签内部调用了局部组件。

局部组件的作用域

相比与全局组件可以在任意的Vue对象绑定的标签中生效,而局部组件只能在创建局部组件的对象中使用。

抽离局部组件的代码片段

直接在局部组件封装代码片段同样没有代码编写提示,所以需要抽离封装的代码片段。

将局部组件中的itembox对应的对象直接赋值

局部组件抽离方法如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <itembox></itembox>
        <itembox></itembox>
    </div>
</body>
</html>
<script>
    var itembox = {
                template:`
                <div>
                    <h1>冒险岛</h1>
                    <h2>幻影</h2>
                </div>
                `
            }

    new Vue({
        el:"#app",
        data:{
    
        },
        methods:{
    
        },
        components:{
            itembox  //缩写格式,完整写法为itembox:itembox
          
        }
    })
</script>
  • 18-25行使用将局部组件对应的template对象抽离出来赋给变量
  • 第36行绑定变量名

template对应的值(代码20-23行)也可以使用template标签来继续抽离。

局部组件抽离作用

提升代码整洁

将封装的代码抽离出来,使得组件内部结构更简洁

提高复用性

可以将组件代码赋值给变量,让其他的vue对象也可以使用变量来达到使用组件的效果。

补充:es6属性与对应的值名称相同缩写

当属性与对应的值名称相同可以缩写,如:

var itembox=123
a = {itembox:itembox}  //前者itembox为属性名,后者itembox代表变量的itembox
// 缩写
a = {itembox}

当属性名和变量名相同时,只保留一个变量名即可。

最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,请随意赞赏