一:使用v-if和v-else
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../lib/vue.js"></script>
</head>
<body>
<div id="app">
<a href="" @click.prevent="flag=true">登录</a>
<a href="" @click.prevent="flag=false">注册</a>
<login v-if="flag"></login>
<register v-else="flag"></register>
</div>
<script>
Vue.component('login',{
template:'<h3>登录组件</h3>'
})
Vue.component('register',{
template:'<h3>注册组件</h3>'
})
var vm = new Vue({
el: "#app",
data: {
flag:true
},
methods: {}
})
</script>
</body>
</html>
二:使用component
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../lib/vue.js"></script>
</head>
<body>
<div id="app">
<a href="" @click.prevent="comName='login'">登录</a>
<a href="" @click.prevent="comName='register'">注册</a>
<component :is="comName"></component>
</div>
<script>
Vue.component('login',{
template:"<h3>登录组件</h3>"
})
Vue.component('register',{
template:"<h3>注册组件</h3>"
})
var vm = new Vue({
el: "#app",
data: {
comName:'login'
},
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">
<title>Document</title>
<script src="../lib/vue.js"></script>
<style>
.v-enter,.v-leave-to{
opacity: 0;
transform:translateX(150px) ;
}
.v-enter-active,.v-leave-to{
transition: all 0.8s ease;
}
</style>
</head>
<body>
<div id="app">
<a href="" @click.prevent="comName='login'">登录</a>
<a href="" @click.prevent="comName='register'">注册</a>
<transition mode="out-in">
<component :is="comName"></component>
</transition>
</div>
<script>
Vue.component('login',{
template:"<h3>登录组件</h3>"
})
Vue.component('register',{
template:"<h3>注册组件</h3>"
})
var vm = new Vue({
el: "#app",
data: {
comName:'login'
},
methods: {}
})
</script>
</body>
</html>