基于vue-router实现 登录注册 组件切换功能

今天用vue.js的components和vue-router做了个简单的   登录注册  组件切换功能,之前都是通过<a>标签链接两个地址来实现跳转,这样增加了页面跳转所需时间,而且用户在使用时也不够流畅。实现效果如下,点击右下角的登录注册链接切换,(只是图中没有显示出我的鼠标指针)

以下是代码

首先导入vue-router文件,这一步千万不要忘记了

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="js/vue-router-3.3.2.js"></script>

创建两个模板,并在body中渲染出来

var login = {
	template:'#login'
}
var register = {
	template:'#register'
}
<div id="app">
			<router-view></router-view>
		</div>
		<template id="login">
			<div class="lr">
			    <div class="pic"><img src="../images/login.png" class="img-responsive" alt="" /></div>
			    <form>
			        <input type="text" class="text" placeholder="用户名" >
			        <input type="password" class="pw2" placeholder="密码" >
			        <div class="submit"><input type="submit" onclick="" value="登录"></div>   
			        <div class="new">
			            <p><a href="#">忘记密码?</a></p>
			            <p class="sign"><a href="#/register">注册</a></p>
			            <div class="clear"></div>
			        </div>
			    </form>
			</div>
		</template>
		<template id="register">
			<div class="lr">
			    <div class="pic"><img src="../images/register.png" class="img-responsive" alt="" /></div>
			    <form>
			        <input type="text" class="text" value="用户名" >
			        <input type="password" class="pw1" placeholder="密码" >
					<input type="password" class="pw2" placeholder="请确认密码"/>
			        <div class="submit"><input type="submit" onclick="" value="注册"></div>
			        <div class="clear"></div>
			        <div class="new">
			            <p><a href="#">忘记密码?</a></p>
			            <p class="sign"><a href="#/login">登录</a></p>
			            <div class="clear"></div>
			        </div>
			    </form>
			</div>
		</template>

创建一个路由对象,在函数中定义两个路由对象,并将路由对象注册到vm实例上,用来监听URL地址的变化,然后展示对应的组件

//创建一个路由对象,当导入vue-router包之后,在window全局对象中,就有了一个路由的构造函数,叫做VueRouter
//在new路由对象的时候,可以为构造函数传递一个配置对象
var routerObj = new VueRouter({
				routes: [//路由匹配规则
                    {path:'/', redirect:'login'},//重定向,默认显示login组件
					{path: '/login', component: login},
					{path: '/register', component:register}					
				]
			})
			var vm = new Vue({
				el: '#app',
				data: {},
				methods:{},
				router:routerObj 
			})

 

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,我们需要在Vue项目中安装vue-router: ``` npm install vue-router --save ``` 然后,在`main.js`文件中引入并使用vue-router: ```js import Vue from 'vue' import VueRouter from 'vue-router' import App from './App.vue' import Login from './components/Login.vue' import Register from './components/Register.vue' Vue.use(VueRouter) const router = new VueRouter({ routes: [ { path: '/login', component: Login }, { path: '/register', component: Register } ] }) new Vue({ router, render: h => h(App), }).$mount('#app') ``` 在上述代码中,我们定义了两个路由,分别是`/login`和`/register`,对应的组件是`Login`和`Register`。 接下来,我们在`App.vue`中添加路由组件的占位符: ```html <template> <div id="app"> <router-view></router-view> </div> </template> ``` 现在,我们就可以在`Login.vue`和`Register.vue`组件中添加`mounted`和`beforeDestroy`钩子函数了: ```js export default { name: 'Login', mounted() { console.log('Login mounted') }, beforeDestroy() { console.log('Login beforeDestroy') } } ``` ```js export default { name: 'Register', mounted() { console.log('Register mounted') }, beforeDestroy() { console.log('Register beforeDestroy') } } ``` 这样,当我们从`/login`切换到`/register`时,会分别触发`Login`组件的`beforeDestroy`钩子函数和`Register`组件的`mounted`钩子函数;而当我们从`/register`切换回`/login`时,会分别触发`Register`组件的`beforeDestroy`钩子函数和`Login`组件的`mounted`钩子函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值