Vue-Router基础学习笔记(小结)

yizhihongxing

下面是针对“Vue-Router基础学习笔记(小结)”的完整攻略:

Vue-Router基础学习笔记(小结)

什么是Vue-Router

Vue-Router是Vue.js的路由管理库,专门提供路由功能实现SPA(Single Page Application, 单页应用)。它去掉了传统的同步方式,采用异步加载组件,一定程度上提高了web应用的速度和流畅度。

安装和使用Vue-Router

在Vue.js的基础上,通过npm安装Vue-Router,并在main.js中创建一个实例将Vue-Router注册到Vue.js中。接着在Vue组件中,我们可以通过Vue-Router提供的router-link和router-view等组件进行路由的跳转和组件的渲染。

// 安装Vue-Router
npm install vue-router
// main.js中的注册Vue-Router语句
import VueRouter from "vue-router";
import routes from "./router"; // 引入路由配置文件
Vue.use(VueRouter);
const router = new VueRouter({ routes });

// 在组件中使用router-link和router-view
<router-link to="/home">Home</router-link>
<router-link to="/about">About</router-link>
<router-view></router-view>

路由的配置

我们需要通过在main.js中声明路由的配置信息来完成路由的配置。路由的配置可分为静态路由和动态路由两种方式。

静态路由

静态路由的设定只需要在路由对象中声明path和component属性,如下:

// router.js路由配置文件
import Home from "./views/Home.vue";
import About from "./views/About.vue";
export default [
  {path: "/", redirect: "/home"}, // 路由重定向
  {path: "/home", component: Home},
  {path: "/about", component: About}
];

动态路由

动态路由可以通过路由对象中的path和component属性来赋值(与静态路由相同),但path属性传递的是带参数的路径,作为组件跳转时的传参,而component属性则对应的是该传参所对应的组件。例如:

// router.js路由配置文件
import User from "./views/User.vue";
export default [
  {path: "/", redirect: "/user/1"}, // 路由重定向
  {path: "/user/:id", component: User},
];

路由的导航

Vue-Router提供了路由导航守卫函数,对路由的跳转进行一系列控制。例如可以配置路由拦截器,进行权限控制。路由导航的基本用法是:

// main.js中的router实例对象
assign beforeEach(() => {
  next();
});

路由状态的管理

Vue-Router提供了路由状态的管理,可用于在router对象实例之间共享数据。例如在A页面修改了数据,但A页面跳转到B页面时,挂载在A页面组件实例上的数据会被销毁,但可以将这些数据存储在路由对象上,从而达到数据共享的效果。路由状态管理的基本用法是:

// main.js中的router实例对象
const router = new VueRouter({...});

// 路由状态管理
router.app_nav_state = {...};
router.beforeEach((to, from, next) => {
  router.app_nav_state.xxx = 'xxx';
  next();
});

// 在组件中使用
this.$router.app_nav_state.xxx;

示例1:路由拦截器

// main.js中的router实例对象
const router = new VueRouter({...});

// 路由拦截器
router.beforeEach((to, from, next) => {
  if (to.path.indexOf('/home') >= 0) {
    let isLogin = sessionStorage.getItem("isLogin");
    if (!isLogin) {
      next({
        path: "/login"
      });
    } else {
      next();
    }
  } else {
    next();
  }
});

// 在Home.vue组件中进入到路由的触发
methods: {
    logout() {
      sessionStorage.setItem("isLogin", false);
      this.$router.push("/login");
    }
}

示例2:路由状态管理

// main.js中的router实例对象中声明路由状态管理
const router = new VueRouter({...});
router.app_nav_state = {};
router.beforeEach((to, from, next) => {
  router.app_nav_state.nav_type = to.meta.nav_type;
  next();
});

// 在Header.vue组件中利用路由状态渲染导航
<div v-if="nav_type === 'main'">
  <router-link to="/">Home</router-link>
  <router-link to="/about">About</router-link>
</div>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue-Router基础学习笔记(小结) - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 浅谈javascript面向对象程序设计

    浅谈JavaScript面向对象程序设计 什么是面向对象编程 面向对象编程(OOP)是一种编程模式,它将现实世界中的事物抽象为类,类与类之间进行交互与协作,通过封装、继承、多态等机制使得程序结构更加清晰、易于扩展与维护。 JavaScript中的面向对象 在JavaScript中,函数是一等公民,对象可以作为函数的参数或返回值,JavaScript中的面向对…

    JavaScript 2023年5月27日
    00
  • JavaScript DOMContentLoaded事件案例详解

    让我们来详细讲解一下JavaScript DOMContentLoaded事件的完整攻略。 什么是DOMContentLoaded事件? DOMContentLoaded是Document对象的事件,当DOM树加载完成并且CSS和JavaScript文件都已经解析执行完毕之后,就会触发该事件。与load事件不同,DOMContentLoaded事件是在页面的…

    JavaScript 2023年6月10日
    00
  • 不唐突的JavaScript的七条准则整理收集第1/2页

    首先来讲一下标题和目录的编写。通常,我们需要在文章的开头编写标题,以便读者能够快速了解文章的主要内容。在Markdown中,我们可以使用#来表示不同的标题级别,例如: 不唐突的JavaScript的七条准则整理收集 第1页 准则一:避免使用全局变量 接下来,我们需要为文章编写目录,以便读者可以快速导航到需要的部分。在Markdown中,我们可以使用[TOC]…

    JavaScript 2023年6月10日
    00
  • JS和JQ的event对象区别分析

    JS和JQ都有一个event对象,但是它们的区别还是比较明显的。在这里我们来详细讲解一下。 1. JS的event对象 在JS中,事件触发时会自动生成一个event对象,并且通过addEventListener或者window.attachEvent绑定的函数,第一个参数都是event。event对象包含了一些事件的属性和方法,可以方便的获取事件的相关信息。…

    JavaScript 2023年6月10日
    00
  • 详解Javascript ES6中的箭头函数(Arrow Functions)

    我可以为您详细讲解一下Javascript ES6中的箭头函数。 什么是箭头函数? 箭头函数,也被称为lambda函数,是ES6新引入的一种函数定义方式,使用 => 来定义函数,相比传统的函数定义有着更为简洁的语法。箭头函数语法如下所示: (param1, param2, …, paramN) => { statements } 其中,参数列…

    JavaScript 2023年5月27日
    00
  • JS判断是否手机或pad访问实现方法

    JS判断是否手机或pad访问实现方法: 使用UA字符串进行判断 一般来说,移动设备的UA字符串中都会包含“Mobile”或“Tablet”等相关信息,通过判断UA中是否包含这些信息可以判断当前设备是否为移动设备,进而进行相应的访问适配。 下面是一个示例代码,可以通过正则表达式判断UA字符串中是否包含“Mobile”或“Tablet”: function is…

    JavaScript 2023年6月10日
    00
  • JavaScript操作选择对象的简单实例

    下面我将为您详细讲解“JavaScript操作选择对象的简单实例”的完整攻略。 1. 选择对象 要操作 HTML 中的元素,我们必须首先找到它。找到元素的最常用方法是使用 id 属性。我们可以使用 document.getElementById() 方法来选择一个有 id 的元素。 比如,我们有如下HTML代码: <div id="demo&…

    JavaScript 2023年5月27日
    00
  • JavaScript中DOM详解

    JavaScript中DOM详解 DOM(Document Object Model)是指用于处理HTML或XML文档的编程接口。我们可以使用JavaScript来操纵和更新HTML文档,这就需要用到DOM。本篇攻略将介绍如何用JavaScript来操作DOM。 DOM是什么? DOM是HTML文档的对象表示。浏览器将HTML文档解析成对象树,由此可以让我们…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部