美文网首页
Vue路由基础知识点

Vue路由基础知识点

作者: 星河光影 | 来源:发表于2019-04-08 19:01 被阅读0次

vue构建

  import VueRouter from "vue-router";
  Vue.use(VueRouter);
  const routes = [{ path: "路径",name: "名字",component:组件名}];
  const router = new VueRouter({routes,mode: "history"});//mode设置后路径不会出现/*/
  new Vue({router,render: h => h(App)}).$mount("#app");

router-link实现跳转

<router-link tag="li" class="nav-link" :to="{name:'HistaryLink'}">//router-link未设置tag时表示a标签,设置tag后表示为所设置的标签,所跳转到页面可用to直接表示,也可用:to用所设置name表示

$router事件跳转

      //跳转到上一次浏览的页面
      this.$router.go(-1);
      //指定跳转的地址
      this.$router.replace("/menu");
     // 指定跳转到路由名字下
      this.$router.replace({ name: "menuLink" });
      //通过push进行跳转
      this.$router.push("/menu");
      this.$router.push({ name: "menuLink" });

无用户输入地址时的默认展示组件

  const routes = [{ path: "*", redirect: "/" }];
  或者
  const routes = [{ path: "路径",name: "名字",redirect: "默认展示路径",components:组件名}];

二级、三级路由

  const routes = [{ path: "路径",name: "名字",component:组件名,children[{path: "路径",name: "名字",components:组件名}]}];

路由守卫

全局守卫

router.beforeEach((to, from, next) => {
  //判断登录状态store.gettes.isLogin === false
  if (to.path == "/login" || to.path == "/register") {
    next();
  } else {
    alert("还没有登录,请先登录");
    next("/login");
  }
});

后置钩子(不常用)

router.afterEach((to, from) => {
  alert("after each");
});

路由独享守卫(设置在routes中)

beforeEnter: (to, from, next) => {
    alert("非登录状态不能访问此页面");
    next(false);
    //判断登录状态store.gettes.isLogin === false;
    if (to.path == "/login" || to.path == "/register") {
      next();
    } else {
      alert("还没有登录,请先登录");
      next("/login");
    }
    }

组件内守卫(设置在对应组件script中)

//组件内守卫beforeRouteEnter和beforeRouteLeave方法
  beforeRouteEnter: (to, from, next) => {
    // alert("hello" + this.name);  //这样name值找不到 因为是先加载组件内守卫再加载data数据的
    // next();
    next(vm => {
      alert("Hello" + vm.name); //想要获取数据需要用这种形式
    });
  }
  beforeRouteLeave: (to, from, next) => {
    if (confirm("确定离开吗") == true) {
      next();
    } else {
      next(false);
    }
  }
//beforeRouteEnter和beforeRouteLeave不能同时存在

复用router-view

  const routes = [{ path: "路径",name: "名字",components:{default:Home,orderringGuide: Orderring,delivery: Dellvery,
  history: Histary}}];

   <router-view name="orderringGuide"></router-view>//default表示默认展示  剩余用这种形式展示

路由精简

创建routes.js文件
内容为
1.引入的路由模块路径
2.export const routes = [{ path: "路径",name: "名字",component:组件名}];
3.在main.js中引入routes.js文件import { routes } from "./routes";

路由控制滚动行为

const router = new VueRouter({
  routes,
  mode: "history",
  scrollBehavior(to, from, savedPosition) {
    // return {
    //   x: 0,
    //   y: 100
    // };
    // return {selector:".btn"}
    if (savedPosition) {
      return savedPosition;
    } else {
      return { x: 0, y: 0 };
    }
  }
});

相关文章

  • Vue-基础-05-重点

    Vue-基础-day05-重点 01-基础-路由-vue-router-嵌套路由 children用法和route...

  • Vue路由

    一、Vue路由基础用法: 二、Vue路由配置的抽出 三、路由动态传值: 四、路由的跳转方式: 五、路由的hash模...

  • Vue_Router底层封装

    Vue_Router底层封装 关于Vue中的路由,做了底层的哈希路由的封装。基础路由相对容易,其中不足之处,慢慢再...

  • Vue路由基础知识点

    vue构建 router-link实现跳转 $router事件跳转 无用户输入地址时的默认展示组件 二级、三级路由...

  • vue-router实现原理,非源代码解析

    前言  在工作和面试中,Vue-router都是比较热的知识点,Vue中的路由解决方案是基于前端路由原理进行封装实...

  • Vue-Router

    Vue-Router路由 1路由基础 创建一个路由对象数组,每个对象分别有,path,component等属性,在...

  • vue2.0+router路由

    1、搭建vue脚手架2、通过vue脚手架,我们搭建好了基础的vue,接下来就开始使用vue-cli来构建基础路由项...

  • Vue基础-路由

    路由--按照path变换,router-view里面的组件变换 创建一个路由对象VueRouter({routes...

  • Vue路由基础

    一、说明 后端路由:对于普通网站,前端通过URL地址请求后端,后台服务器监听接收每次的请求(URL),而这个请求需...

  • Vue 路由基础

    router-link 和 route-view 组件 路由配置2.1. 动态路由2.2. 嵌套路由2.3. 命名...

网友评论

      本文标题:Vue路由基础知识点

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