七、Vue-router介绍

2019-06-06  本文已影响0人  Epat

一、Vue-router介绍

Vue-router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。
相比起多页应用,单页应用有如下这些好处:

虽然单页应用有着难以SEO、开发难度更加大的缺点,但是相比于传统的多页应用有着更好的用户体验上,目前单页应用已经是Web应用开发的潮流

二、Vue-router 使用

1.在codesandbox上创建一个基于Vue的开发环境,并添加Vue-router依赖


添加依赖

2.新建view文件夹,并添加login.vue和home.vue两个文件

<template>
  <div>
    <div><input v-model="name" type="text" placeholder="请输入用户名"></div>
    <div><input v-model="password" type="password" placeholder="请输入密码"></div>
    <button @click="login">登录</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: "",
      password: ""
    };
  },
  methods: {
    login() {
      // 设置登录成功状态
      sessionStorage.setItem("login", this.name);
      // 路由跳转
      this.$router.push("home")
    }
  }
};
</script>
<template>
  <div>首页</div>
</template>
  1. 新建router/index.js,并添加如下代码
import Vue from "vue";
import Router from "vue-router";
import home from "../view/home.vue";
import login from "../view/login.vue";
Vue.use(Router);
const router = new Router({
  mode: "history",
  // 配置对应路径下应该加载的组件
  routes: [
    {
      path: "",
      component: login
    },
    {
      path: "/login",
      name: "login",
      component: login
    },
    {
      path: "/home",
      name: "home",
      component: home
    }
  ]
});

// 添加路由守卫,在路由跳转之前执行
router.beforeEach((to, from, next) => {
  // 如果是要去登录页面,则直接允许
  if (to.path === "" || to.path === "/login") {
    sessionStorage.removeItem("login");
    next();
  }
  let isLogin = sessionStorage.getItem("login");
  // 判断用户是否登录
  if (!isLogin) {
    // 没登录则跳转登录页
    next({ path: "/login" });
  } else {
    // 允许跳转
    next();
  }
});

export default router;
  1. 在main.js中引入router
import router from "./router";
new Vue({
  router,
  render: h => h(App)
}).$mount("#app");
  1. 在App.vue中引入Vue-router组件
<template>
  <div id="app">
    <router-view/>
  </div>
</template>

6.当我们在右侧直接输入/home路径访问时,由于没有登录,直接跳转到了登录页面


登录页面
  1. 当输入用户名、密码登录后,则跳转到了首页


    首页

vue-router官网
codesandbox代码

上一篇下一篇

猜你喜欢

热点阅读