• vue导航守卫如何运用


    每个守卫方法接收三个参数:
    to: 即将要进入的目标 路由对象
    from:当前导航正要离开的路由
    next:: 放行

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    		<script src="../node_modules/vue/dist/vue.js"></script>
    		<script src="../node_modules/vue-router/dist/vue-router.js"></script>
    	</head>
    	<body>
    		<div id="app">
    			<router-link to="/home">首页</router-link>
    			<router-link to="/blog">我的博客</router-link>
    			<router-link to="/login" >登录</router-link>
    			<a href="javascript:void(0)" @click="clearOut">退出</a>
    			<router-view></router-view>
    		</div>
    		
    		<script>
    			//声明组件
    		 var Home={
    			 template:`
    			 <div>我是首页</div>
    			 `
    		 }
    		 var Blog={
    		 	template:`
    		 	 <div>我是博客</div>
    		 	`
    		 }
    		  var Login={
    					data(){
    						return{
    							uname:'',
    							psw:''
    						}
    					},
    		 			 template:`
    		 			 <div>
    						 <input type="text" v-model="uname"/>admin
    						 <input type="text" v-model="psw"/>密码
    						 <input type="button" @click="handlerLogin"  value="登录">
    					 </div>
    		 			 `,
    					 methods:{
    						 handlerLogin(){
    							 <!-- //保存用户名和密码 本地保存 -->
    							 localStorage.setItem("username",{name:this.uname,psw:this.psw});
    							<!-- //编程式导航 -->
    							 this.$router.push({
    								 path:'/blog' 
    							 })
    						 }
    					 }
    					 
    		 }
    		 var router=new VueRouter({
    			 routes:[
    				 {
    					path:'/home',
    					component:Home
    				 },
    				 {
    				 	path:'/blog',
    				 	component:Blog,
    					<!-- 想在哪个组件做控制,跳转之前做配置 -->
    					meta:{
    						//用户访问该组件是否需要登录
    						auth:true
    					}
    				 },
    				 {
    				 	path:'/login',
    				 	component:Login
    				 },
    				
    			 ]
    		 })
    		 router.beforeEach((to,from,next)=>{
    			 console.log(to,from);
    			if(to.meta.auth){
    				<!-- //判断有没有用户名和密码 -->
    				if(localStorage.getItem("username")){
    					<!-- //有用户名说明已经登录 -->
    					<!-- 放行 -->
    					next()
    				}else{
    					<!-- //没有登录,渲染登录组件 -->
    					next({
    						path:"/login"
    					})
    				}
    			}else{
    				next()
    			}
    		 })
    			//router挂载到实例上
    			new Vue({
    				el:"#app",
    				router,
    				methods:{
    					clearOut(){
    						localStorage.removeItem("username");
    						this.$router.push({
    							path:'/login'
    						})
    					}
    				}
    			
    			})
    		</script>
    	</body>
    </html>
    
    
  • 相关阅读:
    git 实践(二) push的使用
    git 实践(一) pull的使用
    redux项目实战应用笔录
    浅谈ES6的Object.assign()浅拷贝
    React下reducer中处理数组&&对象的赋值改动
    git pull与git clone
    (0)网络编程基础(网络基本知识)
    (1)什么是socket(套接字)
    (12)异常处理
    (11)类的内置函数
  • 原文地址:https://www.cnblogs.com/lxystar/p/10729956.html
Copyright © 2020-2023  润新知