Vue-Router

目录

一:路由

二:发展阶段

后端渲染阶段:

前端渲染阶段:

单页面富应用阶段SPA:

三:URL

四:安装脚手架

五:建立脚手架

六:runtime-compile和runtime-only

七:vue的图形化管理

命令vue ui

访问页面

选择导入

可以进行配置修改和查看

八:url改变,但是不重新请求资源:(两种方式)

九:使用路由:

1:安装或者在初始化项目的时候点上vue-router,或者图形化界面自己加2:编写vue组件

3:把组件导入到路由管理中的 index.js,并配置路由的映射关系(一个vue组件对应一个路径)

4:在App.vue中设置路由跳转

十:路由的默认路径设置:

默认是hash模式,想修改成html5的history模式

 修改:在路由设置中修改mode的值

十一:路由跳转的两种方式:

1:标签,在内部默认会被渲染成a标签

             ​编辑

2:方法(通过代码方式,进行路由跳转)

十二:动态路由

1:在App.vue中设置userId的默认值(做项目可以通过后端传来的数据修改)

2:编写User.vue组件,并在路由设置中,配置路由的映射关系,并且在后边加上:userid(:冒号表示动态不要忘记)

 3:App.vue中的路由跳转,写上+userId

4:效果

5:如果想在user组件上的页面上显示出参数userId的具体值,可以在vue组件上直接用{{$route.params.userId}},就能取出参数

6: 效果

十三:路由的懒加载:

十四:路由的嵌套:

1:编写子组件(需要嵌套的组件)

2:在父组件中添加两个子组件的路由跳转

3:配置路由映射关系(子组件由children [ ]包含起来)

5:在app.vue中添加home的路由跳转

6:效果

十五:路由的参数传递(一个路由跳转到另一个路由传递参数)

一:标签跳转写法

第1种:params:  (这个就和动态路由一样)

第2种:query:(推荐)

二:代码传递写法

第一种:result风格(这个风格是我自己瞎掰的)

十六:$route和$router

十七:全局导航守卫

十八:keep-alive


一:路由

路由:路由就是通过互联的网络,把信息从源地址传输到目的地址的活动

路由器提供了两个机制:路由和转送
      路由是数据包从来源到目的地的路径
      转送是 输入的数据转移到合适的输出端

路由表:本质就是一个映射表,决定了数据包的指向

二:发展阶段

后端渲染阶段

后端提供html css,后端处理URL和页面之间的映射关系


前端渲染阶段

随着ajax的出现出现了前后端分离的开发:浏览器显示的内容都是有前端写的js代码,后端只负责提供数据,不负责任何阶段的内容(目前大多数)。
  静态资源服务器中有好几个url:html+css+js=url1,html+css+js=url2,点不同的url就向静态资源服务器请求对应资源


单页面富应用阶段SPA

在前后端分离阶段大的基础上加了一层前端路由,也就是前端维护一套路由规则
   整个网页只有一个html页面(index.html+css+js只有一个),按不同的按钮url就换不同的应用,(点不同的url不需要再向静态资源服务器再去请求了),即抽取对应的不同的资源(就是对应的vue组件),这就需要前端路由做技术支撑
 


三:URL

借鉴: 前端菜鸟笔记:看了就懂的 URL_前端辣么菜的博客-CSDN博客_前端url

介绍:Internet上的每一个网页都具有一个唯一的名称标识

格式:协议://localhost:端口/path?query

/profile?name=张一&age=13
localhost相当于域名,也是主机,也是服务器地址

path就是profile?需要访问的页面

query就是name=张一&age=13,具体查询的参数


四:安装脚手架

npm install -g @vue/cli@3.2.1
因为还要教学脚手架2,所以拉取2.X模板npm install -g@vue/cli-init
这样2和3都能用了


五:建立脚手架

CLI2初始化项目:vue init webpack 项目名称
CLI3初始化项目:vue create 项目名称


六:runtime-compile和runtime-only


runtime-compile和runtime-only的选择:后边更多

runtime-compile和runtime-only的选择:后边更多,性能高,编译出来的代码量更少
 


七:vue的图形化管理


VueCli3配置文件的查看和修改:


命令vue ui


访问页面


选择导入



可以进行配置修改和查看


八:url改变,但是不重新请求资源:(两种方式)

url改变,但是不重新请求资源:(两种方式)用浏览器console控制
第一种:location.hash='aaa'
第二种:history.pushState({},'','about')
          history.pushState({},'','home')
         上面的操作相当于压栈,下面相当于进出栈
          history.go(-1)


九:使用路由:


1:安装或者在初始化项目的时候点上vue-router,或者图形化界面自己加
2:编写vue组件

3:把组件导入到路由管理中的 index.js,并配置路由的映射关系(一个vue组件对应一个路径)

4:在App.vue中设置路由跳转


十:路由的默认路径设置:


默认是hash模式,想修改成html5的history模式

hash模式会有一个#号,不希望要这种

 

 修改:在路由设置中修改mode的值

效果:


十一:路由跳转的两种方式:


1:标签<router-link>,在内部默认会被渲染成a标签

搭配<router-view></router-view>:把跳转的页面内容渲染出来

属性:

tag:可以指定<routerlink>之后渲染组件是什么形式的,button还是a标签形式的?默认是a标签
replace:不会留下history记录,即页面不会回退

active-class:当《router-link》对应的路由匹配成功时,会给当前属性设置一个router-link-active的class,如果不想要router-link-active的名字,可以通过active-class进行修改(但默认不改)

比如我想点哪个哪个就变红

             

2:方法(通过代码方式,进行路由跳转)

 写事件监听

 写对应方法


十二:动态路由
 

很多情况下,我们的url都是不确定的,比如

/user/45345

/user/23445

只能确定前面一部分,后面的不确定,所以就需要动态路由

1:在App.vue中设置userId的默认值(做项目可以通过后端传来的数据修改)

2:编写User.vue组件,并在路由设置中,配置路由的映射关系,并且在后边加上:userid(:冒号表示动态不要忘记)

 3:App.vue中的路由跳转,写上+userId

4:效果

5:如果想在user组件上的页面上显示出参数userId的具体值,可以在vue组件上直接用{{$route.params.userId}},就能取出参数

this.$route表示拿到正在使用的路由

$route代表活跃的路由,是一个路由
$router代表整体路由,在index.js里new出来的

 也可以通过计算属性,取出参数

6: 效果


十三:路由的懒加载:

    因为打包构建应用时,js包会非常大,影响页面加载,

    如果我们能把不同的路由对应的组件分割成不同的代码块。然后当路由被访问的时候才加载对        应的组件就更高效了

懒加载导入:


十四:路由的嵌套:

比如在home页面中,我们希望还有/home/news和 /home/message的链接并展现其对应内容


1:编写子组件(需要嵌套的组件)

       homeMessage.vue和HomeNews.vue

2:在父组件中添加两个子组件的路由跳转

        在home.vue中加入两个路由跳转链接

3:配置路由映射关系(子组件由children [ ]包含起来)

      在router中的index.js中添加路由映射


5:在app.vue中添加home的路由跳转

6:效果


十五:路由的参数传递(一个路由跳转到另一个路由传递参数)

一:标签跳转写法

        标签传递参数有两种方式params和query

        如果传递的参数较多,用第二种


第1种:params:  (这个就和动态路由一样)


  1:编写user.vue组件,并为该组件配置路由,配置路由格式 /user/:userId

 2:写需要传递的参数,这里是userId (如果数据是明确的,以后不会变或者只用1此可以不定义)

data() {
  return {
    userId: 123

  2: 前一个页面:to="'/user/'+userId"
  3:后一个页面由{{$route.params.userId}}获取
  4:传递后形成的路径:/user/123,和/user/abc


第2种:query:(推荐)


  1:编写user.vue组件,并为该组件配置路由,配置路由格式为/user,也就是普通配置

  2:写需要传递的参数,这里是userId (如果数据是明确的,以后不会变或者只用1此可以不定义)

data() {
  return {
    userId: '张海峰'

  3:前一个页面:

<router-link :to="{path:'/profile',query:{name:userId ,age:13}}">档案1-标签跳转</router-link>

  4:后一个页面{{$route.query.name}}获取(注意是query)
  5:传递后形成的路径:/profile?name=张一&age=13

二:代码传递写法

如果传递的数据较多用第二种

第一种传递的是参数,第二种传递的是对象

第一种:result风格(这个风格是我自己瞎掰的)

1:写uer.vue,以及配置路由

2:app.vue中写需要传递的参数

 3:app.vue中写监听事件,以及对应方法

第二种:普通风格(这个风格是我自己瞎掰的)

  这里简写了 ,不详细阐述


十六:$route和$router

$route代表代表活跃的路由,是一个路由,可以获取跳转对象的name、path、query、params等。
$router代表整体路由,在index.js里new出来的,想导航不同的URL就需要使用$router.push方法


十七:全局导航守卫


需求:切换不同的页面显示不同的标题

 设置:在路由设置中写一段代码

 代码:

router.beforeEach((to, from, next) => {
  document.title = to.matched[0].meta.title;
  console.log(to);
  next()
})

效果:


十八:keep-alive

作用是保留各组件状态,避免重新渲染(因为一个标签点上就会被创建点别的就会被销毁,点回来还要重新创建),提高性能

比如我点了首页中的新闻,然后我又点中关于,然后我又点回首页,显示的内容还是新闻内容

1:在home.vue方法中写

beforeRouteLeave(to,from,next){
            console.log(this.$route.path)
            this.path=this.$this.path
            next()
          }

 2:需要显示的内容,被<keep-alive>标签包含

 写在一个组件里其他就跟着生效了

效果:我点了首页中的新闻,然后我又点关于,然后我又点回首页,显示的内容是首页中关于内容

借鉴:keep-alive的使用及详解_一夜枫林的博客-CSDN博客_keep-alive


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue RouterVue.js 官方提供的路由管理器。它允许你在 Vue.js 应用中实现单页面应用(SPA)的路由功能。通过使用 Vue Router,你可以定义不同的路由路径和对应的组件,使得在用户访问不同的路径时,能够动态地加载相应的组件内容,实现页面的切换。 Vue Router 提供了路由配置的方式,可以在路由配置中定义各个路径对应的组件,并且可以设置路由参数、路由守卫等。 在 Vue.js 应用中使用 Vue Router 需要先安装依赖包。你可以使用 npm 或 yarn 进行安装,命令如下: ```bash npm install vue-router # 或者 yarn add vue-router ``` 安装完成后,你需要在你的 Vue.js 应用中引入 Vue Router,并在 Vue 实例中使用它。你可以在入口文件(如 main.js)中进行配置,示例代码如下: ```javascript import Vue from 'vue' import VueRouter from 'vue-router' import Home from './components/Home.vue' import About from './components/About.vue' Vue.use(VueRouter) const routes = [ { path: '/', component: Home }, { path: '/about', component: About } ] const router = new VueRouter({ routes }) new Vue({ router, render: h => h(App) }).$mount('#app') ``` 在上面的示例代码中,我们引入了两个组件 Home 和 About,并定义了两个路由路径 '/' 和 '/about' 对应的组件。然后创建了一个 VueRouter 实例,并传入了路由配置。最后,我们将创建的 router 实例传入到 Vue 实例中,使得整个应用具有路由功能。 这只是一个简单的示例,Vue Router 还提供了更多的配置选项和路由功能,比如嵌套路由、命名路由、动态路由等等。你可以查阅 Vue Router 的官方文档来获取更详细的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值