Vue系列之 => 组件切换

时间:2021-09-25 22:47:47

组件切换方式一

 <!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/jquery2.1.4.min.js"></script>
<script src="./lib/Vue2.5.17.js"></script>
<link href="https://cdn.bootcss.com/animate.css/3.7.0/animate.css" rel="stylesheet">
</head> <body>
<div id="app">
<a href="" @click.prevent="flag=true">登录</a>
<a href="" @click.prevent="flag=flase">注册</a>
<login v-if="flag"></login>
<register v-else="flag"></register>
</div> <template id="userlogin">
<div>
<h1>用户登录界面</h1>
</div>
</template> <template id="userreg">
<div>
<h1>用户注册界面</h1>
</div>
</template>
<script>
Vue.component('login',{
template : '#userlogin'
}); Vue.component('register',{
template : '#userreg'
}) var vm = new Vue({
el: '#app',
data: {
flag : true
},
methods: {},
})
</script>
</body> </html>

组件切换方式二(加上动画)

 <!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/jquery2.1.4.min.js"></script>
<script src="./lib/Vue2.5.17.js"></script>
<link href="https://cdn.bootcss.com/animate.css/3.7.0/animate.css" rel="stylesheet">
</head>
<style>
.v-enter,
.v-leave-to{
opacity: 0;
transform: translateX(150px);
} .v-enter-active,
.v-leave-active{
transition: all 0.5s ease;
}
</style> <body>
<div id="app">
<a href="" @click.prevent="comName='login'">登录</a>
<a href="" @click.prevent="comName='register'">注册</a>
<!-- 这是vue提供的 component 元素来展示对应名称的组件 -->
<!-- component是一个占位符, :is 属性用来指定要展示的组件的名称 -->
<!-- 组件名称是字符串,要用引号包起来 -->
<!-- <component :is="'register'"></component> -->
<!-- 使用变量的方式方便控制 -->
<!-- 设置mode属性值为out-in,动画先出去再进来 -->
<transition mode="out-in">
<component :is="comName"></component>
</transition>
<!-- VUE提供的标签 , component,template,transition, transitionGroup -->
</div> <template id="userlogin">
<div>
<h1>这是登录组件</h1>
</div>
</template> <template id="userreg">
<div>
<h1>这是注册组件</h1>
</div>
</template>
<script>
Vue.component('login',{
template : '#userlogin'
}); Vue.component('register',{
template : '#userreg'
}) var vm = new Vue({
el: '#app',
data: {
comName : 'login' //当前component中的 :is 绑定的组件名称
},
methods: {},
})
</script>
</body> </html>