码迷,mamicode.com
首页 > 其他好文 > 详细

vue——组件

时间:2018-09-25 15:25:13      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:content   ide   sid   head   分享   第一步   row   就是   rap   

  vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来。组件的使用更使我们的项目解耦合。更加符合vue的设计思想MVVM。

1、data必须是一个函数

定义这个 <button-counter> 组件时,你可能会发现它的 data 并不是像这样直接提供一个对象:

data: {
  count: 0
} 

取而代之的是,一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝:

data: function () {
  return {
    count: 0
  }
}

如果 Vue 没有这条规则,点击一个按钮就可能会影响到其它所有实例。

2、组件的组织

  通常一个应用会以一棵嵌套的组件树的形式来组织:

  技术分享图片

  例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。

  技术分享图片

  为了能在模板中使用,这些组件必须先注册以便 Vue 能够识别。这里有两种组件的注册类型:全局注册局部注册

3、vue中局部组件的使用

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        * {
            padding: 0;
            margin: 0;
        }

        .main {
            width: 100%;
        }

        body {
            color: #fff;
        }

        .head {
            width: 100%;
            height: 70px;
            background-color: purple;
            text-align: center;
            font-size: 20px;
            line-height: 70px;
        }

        .wrap {
            width: 100%;
            height: 1200px;
        }

        .wrap .aside {
            width: 30%;
            height: 1200px;
            background-color:green;
            float: left;    /*侧边栏浮动*/
        }

        .wrap .content {
            width: 70%;
            height: 1200px;
            background-color: saddlebrown;
            float: left;    /*内容区浮动*/
        }
    </style>
</head>
<body>
    <div id="app">

    </div>

<script type="text/javascript" src="./vue.js"></script>
<script type="text/javascript">
    // 打油诗:先声子再挂子再用子

    var Vheader = {     // 先声明头部组件
        template:`
            <header class="head">
                我是头部
            </header>
        `
    };

    var Vaside = {     // 声明侧边栏组件
        template:`
            <div class="aside">
                我是侧边栏
            </div>

        `
    };

    var Vcontent = {     // 声明内容区组件
        template:`
            <div class="content">
                我是内容区域
            </div>
        `
    };

    // 第一步.声明入口组件
    /*
        1.头部组件
        2.侧边栏
        3.内容组件
        4.脚步组件
        以上组件分别挂载到入口组件里面去。
     */

    var Vmain = {       // 局部组件
        template:`
            <div class=‘main‘>
                <Vheader></Vheader>
                <div class="wrap">
                    <Vaside/>
                    <Vcontent/>
                </div>
            </div>
        `,
        components:{
            // 等价于Vheader:Vheader,当两个词一模一样时可以这样简写:
            Vheader,     // 挂载子组件:头部组件
            Vaside,      // 挂载子组件:侧边栏组件
            Vcontent
        }
    };

    new Vue({
        el:"#app",   // 注意一个vue里面只有一个el
        //第三步.使用子组件
        template:"<Vmain></Vmain>",
        data: {

        },
        components:{
            //第二步.挂载子组件
            Vmain:Vmain
        }
    });
</script>
</body>

  组件是可复用的Vue实例,并且带有一个名字:在这个例子中是 <Vheader>。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用。

  显示效果如下:

  技术分享图片

4、组件使用的总结

  打油诗:1.声子   2.挂子    3.用子

  

 

vue——组件

标签:content   ide   sid   head   分享   第一步   row   就是   rap   

原文地址:https://www.cnblogs.com/xiugeng/p/9699430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!