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

下面是针对“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日

相关文章

  • 笛卡尔乘积介绍

    笛卡尔积介绍 笛卡尔积是一个非常常用的概念,它将两个集合中的所有元素配对,然后生成所有可能的组合。在计算机科学中,笛卡尔积是一种非常重要的技术,因为它让我们能够快速生成大量组合数据,从而用于各种计算和应用领域,比如机器学习、数据分析等。 示例说明 让我们通过两个简单的例子来说明笛卡尔积的概念: 例子 1 假设我们有两个集合 A 和 B,分别为: A = {1…

    JavaScript 2023年5月28日
    00
  • JavaScript字符串包含问题

    JavaScript字符串包含问题是指在一个字符串中,查找是否包含另一个字符串的问题。通常使用indexOf()或includes()方法来解决该问题。 使用indexOf()方法 indexOf()方法返回字符串中指定字符或字符串第一次出现的位置。返回值为-1表示未找到。可以通过以下方式使用它来判断一个字符串是否包含另一个字符串: let str = ‘h…

    JavaScript 2023年5月28日
    00
  • javascript getElementsByClassName 和js取地址栏参数

    下面分别详细讲解一下”javascript getElementsByClassName”和”js取地址栏参数”。 Javascript getElementsByClassName getElementsByClassName() 是 javascript DOM API 的一部分,该 API 允许开发者通过 class name 查找文档中的 DOM 元…

    JavaScript 2023年6月11日
    00
  • JavaScript高级程序设计(第3版)学习笔记6 初识js对象

    JavaScript高级程序设计(第3版)学习笔记6 初识js对象 简介 本篇笔记主要介绍了JavaScript中对象的基本概念、属性和方法的使用,以及对象的创建与初始化方法等。 JavaScript对象 JavaScript是一种基于对象的语言,并且几乎所有的事物都被视为对象。对象是一组相关数据和方法的集合。 JavaScript对象分为两种类型:内建对象…

    JavaScript 2023年5月27日
    00
  • JSON.stringify转换JSON时日期时间不准确的解决方法

    当使用JSON.stringify方法将JavaScript对象转换成JSON字符串时,日期时间类型的值会被转换成字符串类型,而且格式并不符合ISO8601标准。例如,使用JSON.stringify方法将new Date()转换成JSON字符串时,会得到如下结果: "2021-05-27T09:57:45.730Z" 其中,日期时间的格…

    JavaScript 2023年5月27日
    00
  • anime.js 实现带有描边动画效果的复选框(推荐)

    Anime.js 实现带有描边动画效果的复选框攻略 简介 Anime.js 是一个轻量级的 JavaScript 动画库,可以用来快速的创建各种各样的动画效果。本攻略将介绍如何通过 Anime.js 实现带有描边动画效果的复选框。 步骤 1. 安装 Anime.js 我们首先需要安装 Anime.js,可以通过 npm 或者直接下载源码安装。 npm ins…

    JavaScript 2023年6月11日
    00
  • 深入分析下javascript中的[]()+!

    深入分析下 JavaScript 中的 []()+! 可以分成以下三个部分进行讲解: 1. [] 在 JavaScript 中,[] 表示数组。通过 [] 可以定义一个空数组,如下所示: const arr = []; 同时,[] 还可以用来获取数组的某个元素。例如: const arr = [1, 2, 3]; const firstElement = a…

    JavaScript 2023年6月11日
    00
  • JavaScript函数的使用详解

    JavaScript函数的使用详解 JavaScript中的函数是一组语句,用于执行特定任务或计算值。通过函数,我们可以以可重用的方式组织代码,并将复杂的操作拆分为小的模块。在本文中,我们将介绍JavaScript函数的使用方法,包括函数定义、函数调用、传递参数、返回值等。 函数的定义 JavaScript的函数可以通过函数声明、函数表达式以及箭头函数等方式…

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