Vue全家桶- vue-router

【Vue全家桶】Vue-Router (详解) ​ **前端渲染:**每次请求涉及到的静态资源都会从静态资源服务器获取,这些资源包括HTML+CSS+JS,然后在前端对这些请求回来的资源进行渲染。​ 使用push的特点是压入一个新的页面,那么在用户点击返回时,上一个页面还可以回退,但是如果我们希望当前页面是一个替换 操作,那么可以使用replace。​ 组件的本身也有组件需要内部切换,这个时候就可以采用嵌套路由,在第一层路由中也使用router-view来占位之后需要渲染的组件。以根据自己不同的需求加载不同的路由,做到不同的实现及页面的渲染。... 阅读详情

1.安装vue-router

(1)终端中cd到项目目录下,执行

npm install vue-router --save

2.配置及使用vue-router

2.1在项目目录下的src目录下创建router目录,创建JS文件安装路由功能

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use('VueRouter')

2.2创建路由实例,并传入路由映射配置

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../pages/home/home.vue'
import Order from '../pages/order/order.vue'
import Profile from '../pages/profile/profile.vue'
import Search from '../pages/search/search.vue'
Vue.use('VueRouter')

exports default new VueRouter() {
	routes  = [
		{
	      path: '/',
	      redirect: '/home'//设置默认路径
	    },
	    {
	      path: '/home',
	      component: Home
	    },
	    {
	      path: '/order',
	      component: Order 
	    },
	    {
	      path: '/search',
	      component: Search
	    },
	    {
	      path: '/profile',
	      component:Profile
	    }
	]
	
}
路由history模式

改变路径的方式有两种:
(1)URL的hash
(2)HTML5的history
(3)默认情况下,路径的改变使用的是URL的hash

exports default new VueRouter() {
	routes  = [
		{
	      path: '/',
	      redirect: '/home'//设置默认路径
	    },
	    {
	      path: '/home',
	      component: Home
	    },
	    {
	      path: '/order',
	      component: Order 
	    },
	    {
	      path: '/search',
	      component: Search
	    },
	    {
	      path: '/profile',
	      component:Profile
	    }
	],
mode:'history'

}

history结果:
在这里插入图片描述

hash结果:
在这里插入图片描述

2.3在Vue实例中导入并挂载创建的路由实例

import Vue from 'vue'
import App from './App.vue'
import router from './router'

new Vue({
    el: '#app',
    render: h => h(App),
    router
})

2.4使用vue-router:通过<router-link>和<router-view>

(1)<router-link>:该标签 是一个vue-router中内置的组件,它会被渲染成一个a标签
(2)<router-view>:该标签会根据当前的路径,动态渲染出不同的组件
(3)网页的其他内容,比如顶部的标题/导航,或者顶部的一些版权信息会和处于同一等级
(4)在路由切换时,切换的时挂载的组件,其他内容不会发生变化

<template>
  <div id="app" >
      <router-view/>
      <router-link to ="/home">首页</router-link>
      <router-link to ="/about">我的</router-link>
      <router-link to ="/order">订单</router-link>
      <router-link to ="/search">搜索</router-link>
  </div>
</template>
<script>
  export default {
    name: 'app',
    components: {
      MainTabBar
    }
  }
</script>

2.5 代码实现路由跳转

<template>
  <div id="tab-bar-item" @click="ItemClick">//监听点击事件
  </div>
</template>

<script>
  export default {
    name: "TabBarItem",
    props:{//父组件传递过来的路径
      path: String,
      activeColor: {
        type:String,
        default:'red',
      }
    },
    methods: {
      ItemClick() {
        this.$router.push(this.path)//进行路由跳转
      }
    }
  }
</script>
补充:this.$router.push、this.$router.replace、this.$router.go

1.this.$router.push:
 (1) 想要导航到不同的URL,使用router.push()方法,这个方法会向history栈添加一个新纪录,所以,当用户点击浏览器后退按钮时,会回到之前的URL
(2)当点击 <router-link> 时,这个方法会在内部调用,即点击<router-link :to="..."> 等同于调用 router.push(…)

   a) 声明式:<router-link :to="...">

   b) 编程式:router.push(…)

   c) 该方法的参数可以是一个字符串路径,或者一个描述地址的对象.
  
2.this.$router.replace:

 跳转到指定URL,替换history栈中最后一个记录,点击后退会返回至上上一个页面(不能回退)

3.this.$router.go:
 类似window.history.go(n),向前或向后跳转n个页面,n可正(先后跳转)可负(向前跳转)

2.6路由的嵌套使用

当路由内又包含路由时,我们需要对其内部的路由也进行映射配置,然后和其父组件一样,挂载到对应的页面内,就可以实现嵌套路由的跳转

exports default new VueRouter() {
	routes  = [
		{
	      path: '/',
	      redirect: '/home'//设置默认路径
	    },
	    {
	      path: '/home',
	      component: Home,
	      children:[
	      	{
	      		path:'message',
	      		component:Message
	      		},
	      	{	path:'news',
	      		component:News
	      		},
	      ]
	    },
	    {
	      path: '/order',
	      component: Order 
	    },
	    {
	      path: '/search',
	      component: Search
	    },
	    {
	      path: '/profile',
	      component:Profile
	    }
	],
mode:'history'

}

3.动态路由

在某些情况下,一个页面的path路径可能是不确定的,不如我们进入用户路径界面时,希望是如下路径:
/user/aaa或user/bbb,除了前面的/user之外,后面还更上了用户的id,这种path和component的匹配关系,我们称之为动态路由(也是动态路由传递数据的一种方式)
传递参数主要有两种类型:params和query

3.1 params的类型

1.配置路由格式:/router/:id
2.传递的方式:在path后面跟上对应的值
3.传递后形成的路径:/router/123,/router/abc
在这里插入图片描述
4.params 传参,push 里面只能是 name:‘xxx’,不能是 path:’/xxx’,因为 params 只能用 name 来引入路由,如果写成了 ‘/xxx’,接收参数页面会是 undefined。

3.2query的类型

1.配置路由的格式:/router
2.传递的方式:对象中使用query的key作为传递方式
3.传递后形成的路径:/router?id=123,/router?id=abc

用 query 传递:
 
    this.$router.push({path:'/user', query:{userId: '123'}});
 
    获取参数:this.$route.query.userId
 
    url 形式:url 带参数,http:localhost:8080/#/user?userId=123

4.路由懒加载

4.1认识路由懒加载

(1)官方给出解释:当打包构建应用程序时,JS包会非常大,影响页面的加载,如果我们能够把不同路由对应的组件分割成不同的代码块,然后当路由被访问时才加载对应的组件,这样就更加高效
(2)路由懒加载做了什么?
  *路由懒加载的主要作用就是将路由对应的组件打包成一个个JS代码块
  *只有当这个路由被访问到时,才加载对应的组件
(3)路由懒加载和普通路由配置,打包后的打包文件夹对比:右图中多出的两个文件夹就是,懒加载后,分别对两个组件进行的打包,而左图则为普通路由配置,所有组件的js代码在app.js一个文件夹内
(4)代码结构:

import Vue from 'vue'
import VueRouter from 'vue-router'
const Home = () => import('../pages/home/home.vue')
const Order = () => import('../pages/order/order.vue')
const Profile = () => import('../pages/profile/profile.vue')
const Search = () => import('../pages/search/search.vue')

Vue.use(VueRouter)

export default new VueRouter({
  routes:[
    {
      path: '/',
      redirect: '/home'//设置默认路径
    },
    {
      path: '/home',
      component: Home
    },
    {
      path: '/order',
      component: Order
    },
    {
      path: '/search',
      component: Search
    },
    {
      path: '/profile',
      component:Profile
    }
  ],
  mode:'history'
})

5.全局导航守卫

(1)我们来考虑这样一需求:在SPA应用中,如何改变网页的标题呢?
   网页标题是通过title来显示的,但是SPA只有一个固定的HTML,切换不同页面时,标题并不会改变,但是我们可以通过js来修改title的内容,window.document.title = “新的标题”,那么在vue项目中,在哪里修改,什么时候修改合适呢?
(2)普通修改:我们可以通过每个路由对应的组件.vue项目中,通过mounted生命周期函数来实现。但是当页面较多时,这种方法不容易维护(因为需要多个页面执行类似的代码)
(3)好的办法:导航守卫
(4)什么是导航守卫?
   vue-router提供的导航守卫主要是用来监听路由的进入和离开的
   vue-router提供了beforeEach和afterEach的钩子函数,他们会在路由即将改变前和后触发
(5)上述问题路由导航解决:
   首先,我们可以在钩子中定义一些标题,可以利用meta来定义
   其次,我们用导航守卫,修改我们的标题
(6)代码结构:

const router = new VueRouter({
  routes:[
    {
      path: '/',
      redirect: '/home',//设置默认路径,
      meta:'主页'
    },

    {
      path: '/home',
      component: Home,
      meta:{
        title:'主页'
      }
    },
    {
      path: '/order',
      component: Order,
      meta:{
        title: '订单',
      }
    },
    {
      path: '/search',
      component: Search,
      meta:{
        title: '搜索'
      }
    },
    {
      path: '/profile',
      component:Profile,
      meta:{
        title: '我的'
      }
    }
  ],
  mode:'history',
})

router.beforeEach((to,from,next) =>{//to和from的位置不能变换
  window.document.title = to.meta.title
  next()//调用此方法才能进入下一个钩子
})

6.this.$router与this.$route分别的作用

(1) this.$router

  this.$router 相当于一个全局的路由器对象,包含了很多属性和对象(比如 history 对象),任何页面都可以调用其 push(), replace(), go() 等方法。

(2) this.$route

  this.$route 表示当前路由对象,每一个路由都会有一个 route 对象,是一个局部的对象,可以获取对应的 name, path, params, query 等属性。

基于Vue20高仿今日头条单页应用 基于Vue 2.0高仿 <今日头条> 单页应用 立即下载

相关推荐

vue全家桶项目

vue全家桶前端项目+element-ui+axios+vuex+vue-router

Vue全家桶-项目实战笔记

写在前面 这是我跟着黑马程序员的Vue全家桶-项目实战教程写的一篇笔记,主要记录思路,内容不完整,这里只写到了用户列表管理,进来的友友们可以根据目录,看是否有自己需要的功能 这篇笔记记录的是基础vue内容,没有涉及到组件化开发,距离实际开发有一定的距离,但是可以了解vue的基本使用,登录/登出功能、菜单动态渲染、列表数据渲染等实现思路,对初学者比较友好 想跟着写完整项目的友友们慎入呀!!! 项目源码在码云上 今天完成的是登录/登出功能,其他功能将持续更新 Vue全家桶-项目实战 能够基于Vue初始化

qq_51453356的博客 763

vue项目搭建以及全家桶的使用详细教程(小结)

主要介绍了vue项目搭建以及全家桶的使用详细教程(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

【万字长文】 Vue全家桶从入门到实战,超详细笔记整理 ( 二 ) (建议收藏)

目录13、es6的新特性14、 Vue中组件(component)14.1、Vue标准开发模式14.2、 组件作用14.3 、组件使用14.3.1 、全局组件注册14.3.2 、局部组件注册14.4、Prop的使用14.4.1、 通过在组件上声明静态数据传递给组件内部14.4.2、通过在组件上声明动态数据传递给组件内部14.4.3、prop的单向数据流14.5、组件中定义数据和事件使用14.5.1. 组件中定义属于组件的数据14.5.2.组件中事件定义14.6、向子组件中传递事件并在子组件中调用该事件14.

林深不见鹿 的博客 4345

RPMsg:协议简介

两台计算机可以通过TCP/IP进行通信,那么同一颗芯片上的两个核心怎么通信呢?

SunnyZhou-1024的博客 1万+

SIMetrix教程-001.SIMetrix软件简介与安装

  由于某些原因需要用到SIMetrix仿真软件,然而网上的资料并不是特别多,故在此记录一下这款仿真软件的学习过程,也给有需要的人提供一些参考,免走弯路。如果使用过Pspice或者LTspice软件,学习SIMetrix会很容易入门,仿真软件都是大同小异的,会一样后都可以快速入门其他软件。   SIMetrix是一款以SPICE模型为基础的仿真软件,集成了SIMetrix和SIMPLIS两款内核,为工程师提供了可靠的、易于使用的、并完美结合了速度与精度的电路仿真方式。官方的话不多说,和LTspice一样,优

gaoyong_wang的博客 2万+

2019全新vue2.5项目实战全家桶单页面仿京东电商实战前端js教程

 

ROS Navigation global_planner框架解析

ROS Navigation global_planner框架解析主要讲一下我看源码总结的框架,如果大家跟着这个框架看源码的话可能会看的比较快。主要讲解global_planner关键配置参数含义及关键函数Astar,Dijkstra,QuadraticCalculator::calculatePotential,PotentialCalculator::calculatePotential,GridPath::getPath,GradientPath::getPath.

Jeff_Lee_的博客 4694

vue全面介绍--全家桶、项目实例

简介“简单却不失优雅,小巧而不乏大匠”。 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点”。授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪(Evan You)。 Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式

zhenghao35791的专栏 20万+

缺陷检测-金属表面缺陷检测

1介绍 缺陷检测是工业视觉技术中最重要的组成部分。业务广泛,场景丰富,技术难点高、工作量大。针对不同的场景,选择不同的相机和

huneng1991的专栏 5250

工业级4~20mA转0~3V信号调理电路原理图设计,已量产(电流传感器)

在工业现场,4~20mA 电流信号是模拟量传输的 “老熟人”—— 抗干扰强、能跑长距离,但嵌入式 MCU 的 ADC 一般只认电压信号。最近做项目时,我设计了一款能覆盖 0~25mA(含超量程冗余)、线性输出 0~3V 的调理电路,经过现场调试挺稳定,分享下细节。

不脱发的程序猿 527

Vue全家桶之Vue-router路由(五)

✍ ✍路由发展阶段 ✍后端路由阶段 早期的网站开发整个HTML页面是由服务器来渲染的,服务器直接生产渲染好对应的HTML页面, 返回给客户端进行展示.但是, 一个网站, 这么多页面服务器如何处理呢? 一个页面有自己对应的网址, 也就是URL. URL会发送到服务器, 服务器会通过正则对该URL进行匹配, 并且最后交给一个Controller进行处理. Controller进行各种处理, 最终生成HTML或者数据, 返回给前端. 这就完成了一个IO操作. 上面的这种操作, 就是后端路由 当我们页面中需要

Augenstern_QXL的博客 1832

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

jks212454的博客 2307

Vue全家桶(Vue+Vue-router+Vuex+axios)

Vue全家桶(Vue+Vue-router+Vuex+axios) 1.Vue,用Vue脚手架工具vue-cli搭建了Vue项目; 2.Vue-router,Vue的路由, 路由在全家桶里面定位是什么呢,创建单页应用!简单!我们知道Vuejs是一系列的组件组成应用,既然是组件那么就需要组合起来,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们...

weixin_44345448的博客 407

YOLOv10 的损失函数解析

YOLOv10 在 YOLO 系列的演进中进一步优化了任务解耦与动态平衡策略,通过 ​多模态损失融合、自适应样本分配 和 ​轻量化设计,显著提升了检测精度与推理效率。

浩瀚之水的专栏 1378

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vue全家桶(vue-cli, vue-router, axios, vuex)

vue全家桶包括(vue,vue-cli, vue-router, axios, vuex) 一、Vue 前两篇已经用vue-cli和vue/cli搭建了Vue项目,此处就不赘述了。 二、Vue-router Vue的路由,先献上文档(https://router.vuejs.org/zh-cn/)。 路由在全家桶里面定位是什么呢,创建单页应用!简单!我们知道Vuejs是一系列的组件组成应用,既然...

獨孤殤的博客 1672

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Vue全家桶(五)之Vue-Router路由 (概念及基本使用)

Vue-router 路由🔥 路由 地址 Vue-router 路由 (概念及基本使用)🔥 https://blog.csdn.net/m0_55990909/article/details/123957200 Vue-router 路由 (常见用法) 🔥 https://blog.csdn.net/m0_55990909/article/details/123981283 路由的基本概念与原理 路由是一个比较广义和抽象的概念,路由的本质就是对应关系。 在开发中,路由分为: 后端

m0_55990909的博客 868

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WEB前端:vuejs全家桶(29):vue-router路由

vue-router路由 1. 简介 使用Vue.js开发SPA(Single Page Application)单页面应用 根据不同url地址,显示不同的内容,但显示在同一个页面中,称为单页面应用 `[参考](https://router.vuejs.org/zh-cn) ` bower info vue-router cnpm install vue-router -S 文档 htt...

weixin_43731793的博客 263

已构建配置好的vuejs全家桶项目已包含vue-router vuex api,axios. webpack, 储存vue-ls, 异步async/await, css less. 下载即使用项目开发

github 地址: https://github.com/liangfengbo/vue-cli-project 点击进入 vue-cli-project 已构建配置好的vuejs全家桶项目,统一管理后端接口 | 获取数据 | 请求数据,已包含vue-router,vuex,api,axios. webpack, 储存用vue-ls, 异步async/await, css less. 下...

Github.com/liangfengbo 4219

Vue+vuex+vue-router+sass+webpack+mint-ui 全家桶 开发商城(购物车)

先上截图,项目跑起来就是这个样子,是不是符合你的购物车?哈哈哈哈哈哈哈,我就知道购物车实现的功能:添加购物车、选择某商家下所有商品、选择指定商品、更新指定商品数量(加减)、删除指定商品、全选商品、清空购物车,等功能;准备工作:使用Vue全家桶(vue2.0+vue-router+vuex+webpack+sass+mint-ui),由于都是静态数据,就没有使用axios;注:通常使用npm安装会出...

麻球科技 4494

Vue 全家桶学习笔记 —— Vue Router 的基础使用

Vue 全家桶学习笔记 —— Vue Router 的基础使用 想要使用 Vue 来制作一个单页面应用,那么久不得不使用两个 Vue 官方提供的两个工具(当然你也可以不使用)——一个是页面路由工具 Vue Router,另一个是状态管理工具 Vuex。本篇文章先来说说 Vue Router 的基础使用 基础使用与配置 在引入 vue.js 和 vue-router.js 后,首先创建一...

tzllxya的博客 323

Vue全家桶之Vue-router(前后端路由、嵌套、动态匹配、编程式导航)

1.Vue全家桶之前端路由 1.1路由的基本概念和原理 1.1.1路由 1.路由的本质就是一种对应关系,比如说我们在url地址中输入我们要访问的url地址之后,浏览器要去请求这个url地址对应的资源。 那么url地址和真实的资源之间就有一种对应的关系,就是路由。 2.路由分为前端路由和后端路由 1).后端路由是由服务器端进行实现,并完成资源的分发 2).前端路由是依靠ha...

huohuoit的博客 726

Vue全家桶实践(四)---vue-router

最近公司要重写运营管理系统,不想再维护之前的backbone了,赶紧要求前端整个重写。重开新坑,用了两周多撸出了第一版,收获很大。在实践中学习永远都是最高效的。趁热把学到的东西都记录总结下来,也算前端梳理一下思路。 相关博客: Vue全家桶实践(一)—vue-cli Vue全家桶实践(二)—iView Vue全家桶实践(三)—axios Vue全家桶实践(四)—vue-router Vue

Creabine的博客 3742

Megatron Core 用户指南:Megatron-LM 仓库中的可组合大规模 Transformer 训练框架

Megatron Core 是 Megatron-LM 仓库(当前工作目录 /data/web/disk1/git_repo/GitHub_Trending/me/Megatron-LM)中面向 GPU 优化的 Transformer 大规模训练核心库,提供模块化、可组合的构建块,用于打造自定义训练框架;Megatron-LM 则是展示如何使用这些组件在分布式 GPU 集群上训练数十亿至数万亿参数

gitblog_00633的博客 646
上一篇: HTML-列表
下一篇: HTML-表单
7--up
博客等级 码龄6年 5粉丝 14原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值