Vue——组件

组件组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么的功能,就可以去调用对应的组件即可!

------------------------------------------------------

模块化:是从代码逻辑的角度进行划分的,方便代码分层的开发,保证每个功能模块的只能单一

组件化:是从 UI 界面的角度进行划分的,前端的组件化,方便 UI 组建的重用

 

创建组件的方式 1

 

 

创建组件的方式  2

 

创建组件的方式 3

 

 

定义组件中的data

为什么组件中的 data 要定义为一个 function 

先设定一个环境:一个计数器,点击一次加 1 

 这样看似没有什么问题,可是如果情况是这样的话呢

就会出现公用全局的数据 

所以我们要把 data 定义为一个 function 然后再内部 return 一个对象出来

这样才能保证每一个实例之间的数据都是独有的

这样就不会出现数据共享的情况了

实现组件切换方式 1 

有一个劣势就是如果有三个组件需要切换就没法实现

因为本切换方式是运用了 true 和 false 来控制隐藏显示,只有两种方式

实现组件切换方式 2

最后我们来为组件切换添加上动画

<!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="./lib/vue-2.4.0.js"></script>
  <style>
    .v-enter,
    .v-leave-to {
      opacity: 0;
      transform: translateX(150px);
    }

    .v-enter-active,
    .v-leave-active {
      transition: all 0.5s ease;
    }
  </style>
</head>

<body>
  <div id="app">
    <a href="" @click.prevent="comName='login'">登录</a>
    <a href="" @click.prevent="comName='register'">注册</a>
    <a href="" @click.prevent="comName='Tourist'">游客</a>

    <!-- 通过 mode 属性,设置组件切换时候的 模式 -->
    <!-- out-in 设置先出去后进来
         in-out 设置先进来后出去
    -->
    <transition mode="out-in">
      <component :is="comName"></component>
    </transition>

  </div>

  <script>
    // 组件名称是 字符串
    Vue.component('login', {
      template: '<h3>登录组件</h3>'
    })

    Vue.component('register', {
      template: '<h3>注册组件</h3>'
    })

    Vue.component('Tourist', {
      template: '<h3>游客组件</h3>'
    })
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {
        comName: 'login' // 当前 component 中的 :is 绑定的组件的名称
      },
      methods: {}
    });
  </script>
</body>

</html>

猜你喜欢

转载自www.cnblogs.com/yangpeixian/p/11739623.html