美文网首页
七、Vue-router介绍

七、Vue-router介绍

作者: Epat | 来源:发表于2019-06-06 15:08 被阅读0次

    一、Vue-router介绍

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

    • 无需重复加载公共资源
    • 页面切换速度快,用户体验好
    • 页面切换可以实现转场动画

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

    二、Vue-router 使用

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


    添加依赖

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

    • login.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>
    
    • home.vue
    <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代码

    相关文章

      网友评论

          本文标题:七、Vue-router介绍

          本文链接:https://www.haomeiwen.com/subject/gpgyxctx.html