router基本使用,基本使用

By admin in 4858美高梅 on 2019年4月5日

  路由,其实正是指向的趣味,当自家点击页面上的home按钮时,页面中即将展现home的情节,借使点击页面上的about
按钮,页面中就要展现about 的内容。Home按钮  => home 内容, about按钮
=> about 内容,也得以说是一种映射.
所以在页面上有四个部分,一个是点击部分,叁个是点击之后,呈现内容的片段。 

路由,其实便是指向的意思,当本人点击页面上的home 
按钮时,页面中就要展现home的剧情,假若点击页面上的about
按钮,页面中即将突显about 的始末。Home按钮  => home 内容, about按钮
=> about 内容,也得以说是壹种炫耀。
所以在页面展现中,有多少个部分,多个是索要点击的有的,3个是点击之后,展现点击内容的局地。

一路由,其实正是指向的趣味,当自己点击页面上的home按钮时,页面中就要展现home的内容,假使点击页面上的about
按钮,页面中即将显示about 的剧情。Home按钮  => home 内容, about按钮
=> about 内容,也可以说是壹种映射.
所以在页面上有八个部分,三个是点击部分,多少个是点击之后,呈现内容的部分。

壹、通晓概念

一、路由:路由正是指向的意趣,白话来说正是点击什么按钮,然后就跳转到对应的页面内容。如:点击按钮home,跳转到home页面。

2、理解route,routes,router

      route,是路由的意趣,如home按钮 点击到页面 
home,那些正是一条route,定义route分为两片段,其一是path路径,其2是component组件
=====>{path:’/home ‘,component:home}。

      而routes是复数,可以把routes看做route的集合/数组。

     
router就当做四个首领士,去管理路由的。当用户点击home按钮的时候,请求到home页面内容,router知道了,就去管理了,然后就去了routes里去找到拾1分具体的route,找到了相应的home页面内容,被渲染出来。

三、路径和零部件是对应起来的,再在页面中渲染出来。

四、把所要点击的按钮用<router-link to=’
‘></router-link>包裹起来。

五、router-link渲染成了<a>标签,to=”引号里的渲染成了<a>标签的href

  点击之后,怎么达成正确的呼应,比如,作者点击home
按钮,页面中怎么就恰恰能显得home的剧情。那即将在js 文件中配置路由。

点击之后,怎么达成正确的呼应,比如,笔者点击home
按钮,页面中怎么才能显得home的始末。那即将在js 文件中配备路由。

点击之后,怎么完毕正确的呼应,比如,小编点击home
按钮,页面中怎么就恰恰能显得home的始末。那即将在js 文件中布署路由。

二、实例

贯彻效益,点击“人”,调转到登录页面,如下图

那里的登录页面包车型地铁始末本身就简单写了多少个字。

4858美高梅 1

4858美高梅 2

登录页面

  路由中有三个主导的概念 route, routes, router。

路由中有两个着力的定义 route, routes, router。

路由中有多个主导的概念 route, routes, router。

步骤:

一、新建组件login.vue;

2、在App.vue中定义<router-view></router-view>;

3、在home.vue中定义点击后跳转到哪个路径(因为本人的点击按钮存在于home.vue中);如下图

使用<router-link to=” “></router-link>      
引号内填入要跳转的门径

4858美高梅 3

四、在mian.js里定义router,便是概念路径到零部件的映照

     1)引进组件

     2)告诉vue使用vueRouter

     三)   配置路由

     四)注入到根实例中

如下图:

4858美高梅 4

    一, route,它是一条路由,由那么些英文单词也得以看出来,它是单数,
Home按钮  => home内容, 那是一条route,  about按钮 => about 内容,
那是另一条路由。

壹, route,它是一条路由,由那些英文单词也能够看出来,它是单数,
Home按钮  => home内容, 那是一条route,  about按钮 => about 内容,
那是另一条路由。

一, route,它是一条路由,由那几个英文单词也得以看出来,它是单数,
Home按钮  => home内容, 那是一条route,  about按钮 => about 内容,
那是另一条路由。

三、注意点

1、路由的门道一定要布局不错;新手简单搞不懂路径的不错写法,能够去寻觅一下:那里大致说一下

“./” ====>当前目录下

router基本使用,基本使用。”../” ====>当前目录下的上一流目录

而陈设路由的时候,前面不要求“.”

4858美高梅 5

毋庸置疑途径

         
一始发自小编因为路由的门路写错了,导致页面渲染不出来,如下图,是不对的路线,只是加了‘./’

4858美高梅 6

漏洞极度多路线

    二, routes
是壹组路由,把上面的每一条路由整合起来,形成二个数组。[{home 按钮
=>home内容 }, { about按钮 => about 内容}]

二, routes 是一组路由,把上边的每一条路由整合起来,形成2个数组。[{home
按钮 =>home内容 }, { about按钮 => about 内容}]

二, routes 是壹组路由,把上面包车型大巴每一条路由整合起来,形成八个数组。[{home
按钮 =>home内容 }, { about按钮 => about 内容}]

    三, router
是四个建制,也正是三个领导,它来管理路由。因为routes
只是概念了一组路由,它坐落何地是铁定的事情的,当真正来了请求,如何做?
正是当用户点击home 按钮的时候,咋做?那时router 就起效果了,它到routes
中去寻找,去找到呼应的 home 内容,所以页面中就展示了 home 内容。

三, router 是一个编制,相当于2个首长,它来管理路由。因为routes
只是概念了1组路由,它置身哪儿是不变的,当真正来了请求,如何是好?
正是当用户点击home 按钮的时候,如何做?那时router 就起效果了,它到routes
中去探寻,去找到呼应的 home 内容,所以页面中就突显了   home 内容。

3, router 是多个机制,也就是叁个首席营业官,它来管理路由。因为routes
只是概念了1组路由,它放在哪儿是逐步的,当真正来了请求,如何是好?
正是当用户点击home 按钮的时候,咋办?那时router 就起成效了,它到routes
中去追寻,去找到相应的 home 内容,所以页面中就显得了 home 内容。

    四,客户端中的路由,实际上就是dom
成分的突显和藏身。当页面中体现home 内容的时候,about
中的内容总体隐身,反之也是千篇1律。客户端路由有二种达成格局:基于hash
和依照html伍 history api.

四,客户端中的路由,实际上正是dom 元素的展现和隐藏。当页面中体现home
内容的时候,about
中的内容全方位藏身,反之也是同等。客户端路由有两种达成形式:基于hash
和遵照html五 history api.

4,客户端中的路由,实际上就是dom 成分的彰显和隐形。当页面中显得home
内容的时候,about
中的内容总体潜藏,反之也是同一。客户端路由有二种完毕方式:基于hash
和遵照html伍 history api.

  vue-router中的路由也是根据上边的剧情来完结的

vue-router中的路由也是依据下面的剧情来落到实处的

vue-router中的路由也是依照上边的剧情来兑现的

  在vue中贯彻路由依旧相对简便易行的。因为我们页面中颇具内容都是组件化的,大家假设把路子和零部件对应起来就足以了,然后在页面中把组件渲染出来。

在vue中实现路由依旧相对简单的。因为我们页面中负有剧情都是组件化的,大家借使把路子和组件对应起来就足以了,然后在页面中把组件渲染出来。

在vue中贯彻路由照旧相对简单的。因为大家页面中兼有剧情都以组件化的,我们只要把路子和组件对应起来就能够了,然后在页面中把组件渲染出来。

  一, 页面达成(html模版中)

1, 页面完毕(html模版中)

一, 页面实现(html模版中)

    在vue-router中, 大家见到它定义了三个标签<router-link>
和<router-view>来对应点击和浮现部分。<router-link>
就是概念页面中点击的局部,<router-view>
定义突显部分,就是点击后,区配的剧情呈现在如什么地方方。所以 <router-link>
还有一个那2个首要的习性 to,定义点击之后,要到何地去,
如:<router-link  to=”/home”>Home</router-link>

在vue-router中, 大家也足以观看它定义了几个标签<router-link>
和<router-view>。 <router-link>
便是概念页面中式点心击的部分,<router-view>
正是点击后,凸显内容的有个别。所以 <router-link>
还有3个足够关键的性质 to, 它定义 点击之后,要到哪个路径下 ,
如:<router-link  to=”/home”>Home</router-link>

在vue-router中, 大家看到它定义了多个标签 和来对应点击和呈现部分。
正是概念页面中式点心击的片段,
定义展现部分,正是点击后,区配的始末展现在怎样地点。所以 
还有3个不胜关键的天性 to,定义点击之后,要到哪儿去, 如:Home

  二, js 中布署路由

二, js 中配备路由

2, js 中安顿路由

    首先要定义route,  一条路由的落实。它是三个指标,由多个部分构成:
path和component.  path 指路径,component 指的是组件。如:{path:’/home’,
component: home}

率先要定义route, 
一条路由的贯彻。它是三个目的,最中央的一条路由由五个部分构成: path:
component.  path 指路径,component 指的是组件。如:{path:’/home’,
component: home}

率先要定义route,  一条路由的贯彻。它是1个对象,由八个部分组成:
path和component.  path 指路径,component 指的是组件。如:{path:’/home’,
component: home}

    大家那边有两条路由,组成3个routes: 

我们那里有两条路由,组成3个routes:

我们那里有两条路由,组成多少个routes:

const routes = [
  { path: '/home', component: Home },
  { path: '/about', component: About }
]
const routes = [
 { path: '/home', component: Home },
 { path: '/about', component: About }
]

const routes =[

  最终创设router 对路由实行保管,它是由构造函数 new vueRouter()
创设,接受routes 参数。

谈到底创设router 对路由举行保管,它是由构造函数 new vueRouter()
成立,接受routes 参数。

{ path:’/home’, component: Home },

const router = new VueRouter({
      routes // routes: routes 的简写
})
const router = new VueRouter({
   routes // short for routes: routes
})

{ path:’/about’, component: About }

  配置完结后,把router 实例注入到 vue 根实例中,就足以应用路由了

安插完毕后,把router 实例注入到 vue 根实例中,就可以运用路由

]

const app = new Vue({
  router
}).$mount('#app')
const app = new Vue({
 router
}).$mount('#app')

最后创造router 对路由进行田间管理,它是由构造函数 new vueRouter()
成立,接受routes 参数。

  执行进程:当用户点击 router-link 标签时,会去摸索它的 to 属性, 它的
to 属性和 js 中计划的不二等秘书籍{ path: ‘/home’, component: Home}  path
一一对应,从而找到了合营的机件, 最终把组件渲染到 <router-view>
标签所在的地点。全体的那个完成才是基于hash 完毕的。

实践进度:当用户点击 router-link 标签时,会去寻找它的 to 属性, 它的 to
属性和 js 中配置的门径{ path: ‘/home’, component: Home}  path
1一对应,从而找到了卓越的零部件, 最后把组件渲染到 <router-view>
标签。全数的那一个达成才是根据hash 落成的。

const router =newVueRouter({

 vue-cli 成立1个体系体验一下, 当然绝不遗忘安装vue-router

vue-cli 创造1个门类体验一下, 当然绝不遗忘安装vue-router

routes//routes: routes 的简写})

  一, 在src 目录下新建七个零件,home.vue 和 about.vue

一, 在src 目录下新建多个零部件,home.vue 和 about.vue

安插完结后,把router 实例注入到 vue 根实例中,就能够动用路由了

<template>
    <div>
        <h1>home</h1>
        <p>{{msg}}</p>
    </div>
</template>
<script>
    export default {
        data () {
            return {
                msg: "我是home 组件"
            }
        }
    }
</script>

<template>
    <div>
        <h1>about</h1>
        <p>{{aboutMsg}}</p>
    </div>
</template>
<script>
    export default {
        data () {
            return {
                aboutMsg: '我是about组件'
            }
        }
    }
</script>
<template>
  <div>
    <h1>home</h1>
    <p>{{msg}}</p>
  </div>
</template>
<script>
  export default {
    data () {
      return {
        msg: "我是home 组件"
      }
    }
  }
</script>


<template>
  <div>
    <h1>about</h1>
    <p>{{aboutMsg}}</p>
  </div>
</template>
<script>
  export default {
    data () {
      return {
        aboutMsg: '我是about组件'
      }
    }
  }
</script>

const app =newVue({

  2, 在 App.vue中 定义<router-link > 和 </router-view>  

2, 在 App.vue中 定义<router-link > 和 </router-view> 

router

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <header>
    <!-- router-link 定义点击后导航到哪个路径下 -->
      <router-link to="/home">Home</router-link>
      <router-link to="/about">About</router-link>
    </header>
    <!-- 对应的组件内容渲染到router-view中 -->
    <router-view></router-view>   
  </div>
</template>

<script>
export default {

}
</script>
<template>
 <div id="app">
  <img src="./assets/logo.png">
  <header>
  <!-- router-link 定义点击后导航到哪个路径下 -->
   <router-link to="/home">Home</router-link>
   <router-link to="/about">About</router-link>
  </header>
  <!-- 对应的组件内容渲染到router-view中 -->
  <router-view></router-view>  
 </div>
</template>

<script>
export default {

}
</script>

}).$mount(‘#app’)

  3,  在 src目录下再新建2个router.js 定义router, 便是概念 路径到
组件的 映射。

3,  在 src目录下再新建二个router.js 定义router, 正是概念 路径到 组件的
映射。

实践进度:当用户点击 router-link 标签时,会去寻找它的 to 属性, 它的 to
属性和 js 中配置的路线{ path: ‘/home’, component: Home}  path
一一对应,从而找到了同盟的组件, 最后把组件渲染到
标签所在的地点。全数的这几个完成才是遵照hash 完毕的。

import Vue from "vue";
import VueRouter from "vue-router";

// 引入组件
import home from "./home.vue";
import about from "./about.vue";

// 要告诉 vue 使用 vueRouter
Vue.use(VueRouter);

const routes = [
    {
        path:"/home",
        component: home
    },
    {
        path: "/about",
        component: about
    }
]

var router =  new VueRouter({
    routes
})
export default router;
import Vue from "vue";
import VueRouter from "vue-router";

// 引入组件
import home from "./home.vue";
import about from "./about.vue";

// 要告诉 vue 使用 vueRouter
Vue.use(VueRouter);

const routes = [
  {
    path:"/home",
    component: home
  },
  {
    path: "/about",
    component: about
  }
]

var router = new VueRouter({
  routes
})
export default router;

vue-cli 创立四个类型体验一下, 当然绝不忘记安装vue-router

  4, 把路由注入到根实例中,运营路由。那里实在还有壹种办法,就好像vuex
 store 注入到根实例中相同,大家也足以把vueRouter
直接注入到根实例中。在main.js中引进路由,注入到根实例中。

四, 把路由注入到根实例中,运维路由。那里实在还有一种办法,就像是store
注入到根实例中,大家能够在main.js中引入路由,注入到根实例中。

一, 在src 目录下新建七个零件,home.vue 和 about.vue

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

// 引入路由
import router from "./router.js"    // import router 的router 一定要小写, 不要写成Router, 否则报 can't match的报错
new Vue({
  el: '#app',
  router,  // 注入到根实例中
  render: h => h(App)
})
import Vue from 'vue'
import App from './App.vue'

// 引入路由
import router from "./router.js"
new Vue({
 el: '#app',
 router, // 注入到根实例中
 render: h => h(App)
})

4858美高梅 7

  5, 那时点击页面上的home 和about
能够观察组件来回切换。不过有三个难点,当首回进入页面包车型客车时候,页面中并未显得别的内容。这是因为第二遍进入页面时,它的门径是
‘/’,大家并从未给这一个路子做相应的布置。一般,页面小米载进来都会显得home页面,我们也要把那几个路子指向home组件。不过1旦大家写{
path: ‘/’, component: Home },vue
会报错,因为两条路子却指向同3个方向。那如何做?那亟需重定向,所谓重定向,正是重复给它内定二个样子,它自然是访问
/ 路径,大家再度指向‘/home’, 它就一定于访问 ‘/home’, 相应地,
home组件就会呈现到页面上。vueRouter中用 redirect 来定义重定向。

五, 那时点击页面上的home 和about
能够见到组件来回切换。不过有3个题材,当第一回进入页面的时候,页面中并不曾出示别的组件。我们想让页面酷派载进来就显示home页面,那需求重定向,所谓重定向,其实正是重新给它内定2个主旋律,比如当用户点击home
的时候,大家让它指向about.

   

const routes = [
    {
        path:"/home",
        component: home
    },
    {
        path: "/about",
        component: about
    },
    // 重定向
    {
        path: '/', 
        redirect: '/home' 
    }
]

那用到了redirect 配置。刚进去页面包车型大巴时候,它的不二等秘书诀是 ‘/’,
所以重新定义到home

       

  今后页面平时了,第一遍跻身呈现home, 并且点击也得以见到内容的切换。

const routes = [
  {
    path:"/home",
    component: home
  },
  {
    path: "/about",
    component: about
  },
  // 重定向
  {
    path: '/', 
    redirect: '/home' 
  }
]

home

       

{{msg}}

   

exportdefault{

data () {return{

msg:”我是home 组件”}

}

}

4858美高梅 8

4858美高梅 9

   

       

6, 末了,大家看一下路由是怎么落到实处的

陆, 当大家开拓浏览器的控制台,能够见到路由时组件的切换。

about

       

{{aboutMsg}}

   

exportdefault{

data () {return{

aboutMsg:’我是about组件’}

}

}

4858美高梅 10

2, 在 App.vue中 定义 和 

4858美高梅 11

 

    4858美高梅 12              Home     
About               

exportdefault{

}

4858美高梅 13

三,  在 src目录下再新建二个router.js 定义router, 正是概念 路径到 组件的
映射。

4858美高梅 14

import Vue from “vue”;

import VueRouter from”vue-router”;//引进组件import home from
“./home.vue”;

import about from”./about.vue”;//要告诉 vue 使用
vueRouterVue.use(VueRouter);

const routes=[

{

path:”/home”,

component: home

},

{

path:”/about”,

component: about

}

]varrouter =newVueRouter({

routes

})

exportdefaultrouter;

4858美高梅 15

肆, 把路由注入到根实例中,运营路由。那里实在还有1种艺术,就像是vuex
 store 注入到根实例中相同,大家也能够把vueRouter
直接流入到根实例中。在main.js中引进路由,注入到根实例中。

4858美高梅 16

import Vue from ‘vue’import App from’./App.vue’//引进路由import router
from “./router.js”newVue({

el:’#app’,

router,//注入到根实例中render: h =>h(App)

})

4858美高梅 17

5, 这时点击页面上的home 和about
能够看到组件来回切换。但是有多少个难点,当第一回跻身页面包车型客车时候,页面中并不曾呈现此外内容。那是因为第1遍跻身页面时,它的门路是
‘/’,大家并未给那些途径做相应的安顿。壹般,页面Samsung载进来都会显得home页面,大家也要把那个途径指向home组件。可是假设大家写{
path: ‘/’, component: Home },vue
会报错,因为两条途径却指向同三个大方向。那咋办?这亟需重定向,所谓重定向,就是重新给它钦赐叁个主旋律,它自然是造访
/ 路径,大家再一次指向‘/home’, 它就也等于访问 ‘/home’, 相应地,
home组件就会显获得页面上。vueRouter中用 redirect 来定义重定向。

4858美高梅 18

const routes =[

{

path:”/home”,

component: home

},

{

path:”/about”,

component: about

},//重定向{

path:’/’,

redirect:’/home’}

]

4858美高梅 19

当今页面平常了,第3次跻身显示home, 并且点击也得以看出内容的切换。

6, 最终,大家看一下路由是怎么落到实处的

开辟浏览器控制台,首先阅览 router-link 标签渲染成了 a 标签,to
属性别变化成了a 标签的 href 属性,那时就驾驭了点击跳转的趣味。router-view
标签渲染成了大家定义的零部件,其实它正是三个占位符,它在怎么样地点,相配路径的机件就在怎么地点,所以
router-link 和router-view 标签1壹对应,成对出现。

4858美高梅 20

那里还见到,当点击Home和About 来回切换时,a
标签有几个体裁类 .router-link-active 也在过往切换,
原来那是当router-link 处于选中状态时,vueRouter
会自动抬高那个类,由此大家也足以动用那几个类来改变选中时的景况,如选中时,让它变成石磨蓝。但当设置
.router-link-active {color:
red;},它并从未生效,那时还要在类前边加2个a, a.router-link-active
{color: red;}, 那样就从未有过难题了。未处于选中状态的router-link,
我们也想给它改变样式,咋办? 直接给它添加一个 class 就足以了, Home

动态路由

上面大家定义的路由,都以从严匹配的,唯有router-link 中的to属性和 js
中一条路由route中 path 壹模壹样,才能显得相应的零件component.
但有时现实却不是如此的,当大家去拜谒网站并登录成功后,它会议及展览示 欢迎你,+
你的名字。区别的用户登录, 只是呈现“你的名字”
部分分裂,其余一些是如出壹辙的。那就意味着,它是贰个零部件,假如是user组件。差异的用户(正是用户的id不一样),它都会导航到同一个user
 组件中。那样大家在布局路由的时候,就无法写死,
正是路由中的path属性,不可能写死,那要怎么设置? 导航到 user
组件,路径中必然有user, id 不一样,那就给路径一个动态部分来合作差异的id.
 在vue-router中,动态部分 以 : 开始,那么路径就改为了 /user/:id,
那条路由就能够如此写:  { path:”/user/:id”, component: user }.

咱俩定义3个user组件(自身无论写多个就好了),页面中再添加多少个router-link
用于导航, 最终router.js中添加路由布署,来体验一下

app.vue 中添加四个router-link:

4858美高梅 21

4858美高梅 22

Home

About

User123

User456

4858美高梅 23

router.js 配置user动态路由:

4858美高梅 24

const routes =[

{

path:”/home”,

component: home

},

{

path:”/about”,

component: about

},/*新增user路径,配置了动态的id*/{

path:”/user/:id”,

component: user

},

{

path:’/’,

redirect:’/home’}

]

4858美高梅 25

user组件

4858美高梅 26

   

       

  打开浏览器控制台,首先观察 router-link 标签渲染成了 a 标签,to
属性别变化成了a 标签的 href 属性,那时就知道了点击跳转的趣味。router-view
标签渲染成了小编们定义的机件,其实它正是三个占位符,它在怎么样地点,相配路径的组件就在怎么地点,所以
router-link 和router-view 标签壹一对应,成对出现。

先是观望 router-link 标签渲染成了 a 标签,to 属性别变化成了a 标签的 href
属性,这时就清楚了点击跳转的情致。router-view
标签渲染成了大家定义的组件。能够对照一下app.vue 中的标签和控制哈博罗内的标签

User

       

我是user组件

   

exportdefault{

}

4858美高梅 27

那儿在页面中式点心击user12叁 和user456,
能够观望它们都领航到user组件,配置不错。

在动态路由中,怎么获取到动态部分?
因为在组件中是能够展现区别部分的,正是地点提到的“你的名字”。其实,当全体vue-router
注入到根实例后,在组件的内部,能够由此this.$route 来收获到 router
实例。它有1个params
属性,就是来取得这一个动态部分的。它是叁个对象,属性名,正是路线中定义的动态部分
id, 属性值正是router-link中to
属性中的动态部分,如1二3。使用vuex时,组件中想要获取到state
中的状态,是用computed 属性,在那里也是一致,在组件中,定义三个computed
属性dynamicSegment,user 组件修改如下:

4858美高梅 28

   

       

4858美高梅 29

4858美高梅 30

User

       

自作者是user组件, 动态部分是{{dynamicSegment}}

   

exportdefault{

computed: {

dynamicSegment () {returnthis.$route.params.id

}

}

}

4858美高梅 31

此间还有最终五个标题,就是动态路由在来回切换时,由于它们都以指向同1组件,vue不会销毁再成立这么些组件,而是复用这几个组件,就是当第1遍点击(如:user1二③)的时候,vue
把相应的零部件渲染出来,但在user1二3,
user45陆点击来回切换的时候,这么些组件就不会发生变化了,组件的生命周期不管用了。那时若是想要在组件来回切换的时候做点工作,那么只可以在组件内部(user.vue中)利用watch
来监听$route 的变更。把上面的代码用监听$route 达成

4858美高梅 32

exportdefault{

data () {return{

dynamicSegment:”}

},

watch: {

$route (to,from){//to表示的是您要去的不得了组件,from
表示的是您从哪个组件过来的,它们是五个对象,你能够把它打印出来,它们也有贰个param
属性console.log(to);

console.log(from);this.dynamicSegment =to.params.id

}

}

}

4858美高梅 33

嵌套路由

嵌套路由,首倘若由大家的页面结构所决定的。当我们进入到home页面包车型地铁时候,它上边还有分类,如手提式有线电话机延续串,平板体系,电脑密密麻麻。当大家点击各种分类的时候,它依旧须求路由到各类部分,如点击掌提式有线电话机,它一定到对应到手提式无线电话机的有的。

在路由的宏图上,首先进入到 home ,然后才能跻身到phone, tablet, computer. 
Phone, tablet, compute 就一定于进入到了home的子成分。所以vue 
提供了childrens 属性,它也是壹组路由,相当于大家所写的routes。

第贰,在home页面上定义多个router-link
标签用于导航,然后再定义2个router-view标签,用于渲染对应的机件。router-link
和router-view 标签要各种对应。home.vue 组件修改如下:

4858美高梅 34

   

       

  那里还见到,当点击Home和About 来回切换时,a
标签有多少个体裁类 .router-link-active 也在来回切换,
原来这是当router-link 处于选中状态时,vueRouter
会自动抬高这些类,因而大家也足以动用那几个类来改变选中时的情况,如选中时,让它变成黑褐。但当设置
.router-link-active {color:
red;},它并从未生效,这时还要在类前边加3个a, a.router-link-active
{color: red;}, 那样就从未有过难题了。未处于选中状态的router-link,
大家也想给它改变样式,如何做? 间接给它添加二个 class 就足以了,
<router-link class=”red”>Home</router-link>

 动态路由

home

       

            手机            平板            电脑       

           

4858美高梅 35

router.js 配置路由,修改如下:

4858美高梅 36

const routes =[

4858美高梅 ,{

path:”/home”,

// 上面那么些脾性也不少,因为,我们是先进入home页面,才能跻身子路由       
component: home,

// 子路由        children: [            {                path:

“phone”,

component: phone

},

{

path:”tablet”,

component: tablet

},

{

path:”computer”,

component: computer

}]

},

{

path:”/about”,

component: about

},{

path:”/user/:id”,

component: user

},

{

path:’/’,

redirect:’/home’}

]

4858美高梅 37

这儿当大家点击home
时,它下边出现手提式有线电话机等字样,但并没有别的对应的组件进行呈现,那日常不是我们想要的。要想点击home时,要想渲染相呼应的子组件,那还亟需配置一条路由。当进入到home
时,它在children中对应的路由path 是空 ‘’,完整的childrens 如下:

4858美高梅 38

children: [

{

path:”phone”,

component: phone

},

{

path:”tablet”,

component: tablet

},

{

path:”computer”,        component: computer    },

// 当进入到home时,上边的组件展现    {        path:

“”,

component: phone

}

]

4858美高梅 39

命名路由

取名路由,相当粗略,因为依据名字就能够领略,这一个路由有1个名字,那就直接给这些路由加1个name
属性,就能够了。 给user 路由加贰个name 属性:

{

path:”/user/:id”,

name:”user”,

component: user

}

命名路由的利用, 在router-link 中to 属性就能够利用对象了,

User12三 // 和下部等价

User  // 当使用对象作为路由的时候,to前边要加贰个冒号,表示绑定

编制程序式导航:那关键使用到按钮点击上。当点击按钮的时候,跳转另叁个组件,
那只好用代码,调用rourter.push() 方法。 当们把router
注入到根实例中后,组件中通过 this.$router 能够取得到router,
所以在组件中应用

this.$router.push(“home”), 就可以跳转到home界面

2转载自

3

动态路由

官网给的例证是,不一致的用户(正是用户的id分歧),它都会导航到同2个user 
组件中。那样大家在布署路由的时候,就不可能写死,
正是路由中的path属性,不能够写死。如 path:
“/home”,唯有是home的时候,才能显得home 组件,执行的是严苛相称。导航到
user 组件,路径中自然有user,

  上面我们定义的路由,都以严苛相称的,唯有router-link 中的to属性和
js 中一条路由route中 path 一模一样,才能显得相应的零部件component.
但有时候现实却不是那样的,当大家去访问网址并登录成功后,它会显得 欢迎你,+
你的名字。分歧的用户登录, 只是展现“你的名字”
部分分歧,此外1些是一律的。那就象征,它是3个零部件,假如是user组件。差异的用户(就是用户的id差别),它都会导航到同叁个user
 组件中。那样我们在布署路由的时候,就不能写死,
正是路由中的path属性,不能写死,这要怎么设置? 导航到 user
组件,路径中势必有user, id 分裂,那就给路径八个动态部分来配合分歧的id.
 在vue-router中,动态部分 以 : 先河,那么路径就变成了 /user/:id,
那条路由就可以如此写:  { path:”/user/:id”, component: user }.

id 分化,那就给路径一个动态部分来合作区别的id. 动态部分 以 :
起初,那么路径就成为了 /user/:id, 那条路由就足以这么写: {
path:”/user/:id”, component: user }.

  大家定义3个user组件(自身无论写2个就好了),页面中再添加多少个router-link
用于导航, 最终router.js中添加路由布置,来体验一下

再定义二个user组件,页面中添加五个router-link 用于导航,
router.js中添加路由陈设。user组件随便写三个就好了。

  app.vue 中添加多少个router-link:

app.vue 更改如下:

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <header>
      <router-link to="/home">Home</router-link>
      <router-link to="/about">About</router-link>
     <!--  增加两个到user组件的导航,可以看到这里使用了不同的to属性 -->
      <router-link to="/user/123">User123</router-link>
      <router-link to="/user/456">User456</router-link>
    </header>
    <router-view></router-view>   
  </div>
</template>
<template>
 <div id="app">
  <img src="./assets/logo.png">
  <header>
   <router-link to="/home">Home</router-link>
   <router-link to="/about">About</router-link>
   <!-- 增加两个到user组件的导航,可以看到这里使用了不同的to属性 -->
   <router-link to="/user/123">User123</router-link>
   <router-link to="/user/456">User456</router-link>
  </header>
  <router-view></router-view>  
 </div>
</template>

router.js 配置user动态路由:

router.js 更改如下:

const routes = [
    {
        path:"/home",
        component: home
    },
    {
        path: "/about",
        component: about
    },
    /*新增user路径,配置了动态的id*/
    {
        path: "/user/:id",
        component: user
    },
    {
        path: '/', 
        redirect: '/home' 
    }
]
const routes = [
  {
    path:"/home",
    component: home
  },
  {
    path: "/about",
    component: about
  },
  /*新增user路径,配置了动态的id*/
  {
    path: "/user/:id",
    component: user
  },
  {
    path: '/', 
    redirect: '/home' 
  }
]

  user组件

在动态路由中,假诺我们想知道路由是从何地过来的,正是取获得动态部分咋办?
其实,当整个vue-router
注入到根实例后,在组件的个中,我们是足以经过this.$route.params
来取得这么些动态部分的。它是一个对象,属性名,便是路线中定义的动态部分 id,
属性值即是router-link中to 属性中的动态部分,如1贰3。
在组件中,假使想要获取到state 中的状态,大家得以用computed
属性,在那里也是同一,在组件中,定义3个computed 属性dynamicSegment,
user 组件修改如下:

<template>
    <div>
        <h1>User</h1>
        <div>我是user组件</div>
    </div>
</template>
<script>
    export default {

    }
</script>
<template>
  <div>
    <h1>User</h1>
    <div>我是user组件, 动态部分是{{dynamicSegment}}</div>
  </div>
</template>
<script>
  export default {
    computed: {
      dynamicSegment () {
        return this.$route.params.id
      }
    }
  }
</script>

  这时在页面中式点心击user1二三 和user45陆,
可以看看它们都领航到user组件,配置不错。   

如上正是本文的全体内容,希望对大家的上学抱有帮忙,也期望大家多多支持脚本之家。

  在动态路由中,怎么获取到动态部分?
因为在组件中是能够展现不一致部分的,就是地方提到的“你的名字”。其实,当全部vue-router
注入到根实例后,在组件的内部,能够由此this.$route 来获得到 router
实例。它有三个params
属性,就是来赢得那几个动态部分的。它是二个目的,属性名,就是途径中定义的动态部分
id, 属性值正是router-link中to
属性中的动态部分,如1二三。使用vuex时,组件中想要获取到state
中的状态,是用computed 属性,在那边也是千篇壹律,在组件中,定义1个computed
属性dynamicSegment, user 组件修改如下:

您大概感兴趣的篇章:

  • 消除vue router使用 history
    情势刷新后404题材
  • Vue学习笔记进阶篇之vue-router安装及运用方法
  • vue
    router2.0二级路由的粗略利用
  • 详解使用vue-router进行页面切换时滚动条地方与滚动监听事件
  • Vue.js:使用Vue-Router
    2完结路由效用介绍
  • vue-router:嵌套路由的利用方法
  • VueJs路由跳转——vue-router的施用详解
  • vue脚手架及vue-router基本使用
<template>
    <div>
        <h1>User</h1>
        <div>我是user组件, 动态部分是{{dynamicSegment}}</div>
    </div>
</template>
<script>
    export default {
        computed: {
            dynamicSegment () {
                return this.$route.params.id
            }
        }
    }
</script>

  那里还有最终三个难点,正是动态路由在往返切换时,由于它们都是指向同一组件,vue不会销毁又创建这么些组件,而是复用那一个组件,正是当第叁遍点击(如:user1二三)的时候,vue
把相应的零件渲染出来,但在user1二三,
user45陆点击来回切换的时候,那个组件就不会发生变化了,组件的生命周期不管用了。那时要是想要在组件来回切换的时候做点工作,那么只幸而组件内部(user.vue中)利用watch
来监听$route 的变迁。把上边的代码用监听$route 达成

<script>
    export default {
        data () {
            return {
                dynamicSegment: ''
            }
        },
        watch: {
            $route (to,from){
                // to表示的是你要去的那个组件,from 表示的是你从哪个组件过来的,它们是两个对象,你可以把它打印出来,它们也有一个param 属性
                console.log(to);
                console.log(from);
                this.dynamicSegment = to.params.id
            }
        }
    }
</script>

嵌套路由

  嵌套路由,首要是由大家的页面结构所控制的。当大家进去到home页面包车型大巴时候,它下边还有分类,如手提式有线电话机一而再串,平板种类,电脑密密麻麻。当大家点击各样分类的时候,它照旧须求路由到各类部分,如点拍掌提式有线电话机,它必然到相应到手提式有线电话机的片段。

  在路由的宏图上,首先进入到 home ,然后才能进来到phone, tablet,
computer.  Phone, tablet, compute 就一定于进入到了home的子成分。所以vue 
提供了childrens 属性,它也是1组路由,相当于大家所写的routes。

  首先,在home页面上定义三个router-link
标签用于导航,然后再定义叁个router-view标签,用于渲染对应的零部件。router-link
和router-view 标签要依次对应。home.vue 组件修改如下:

<template>
    <div>
        <h1>home</h1>
<!-- router-link 的to属性要注意,路由是先进入到home,然后才进入相应的子路由如 phone,所以书写时要把 home 带上 -->
        <p>
            <router-link to="/home/phone">手机</router-link>
            <router-link to="/home/tablet">平板</router-link>
            <router-link to="/home/computer">电脑</router-link>
        </p>
        <router-view></router-view>
    </div>
</template>

router.js 配置路由,修改如下:

const routes = [
    {
        path:"/home",
     // 下面这个属性也不少,因为,我们是先进入home页面,才能进入子路由
        component: home,
     // 子路由
        children: [
            {
                path: "phone",
                component: phone
            },
            {
                path: "tablet",
                component: tablet
            },
            {
                path: "computer",
                component: computer
            }
        ]
    },
    {
        path: "/about",
        component: about
    },
    {
        path: "/user/:id",
        component: user
    },
    {
        path: '/', 
        redirect: '/home' 
    }
]

  那时当大家点击home
时,它上面出现手提式有线电话机等字样,但从不其余对应的零件举办体现,那1般不是大家想要的。要想点击home时,要想渲染相对应的子组件,那还亟需安顿一条路由。当进入到home
时,它在children中对应的路由path 是空 ‘’,完整的childrens 如下:

children: [
    {
        path: "phone",
        component: phone
    },
    {
        path: "tablet",
        component: tablet
    },
    {
        path: "computer",
        component: computer
    },
    // 当进入到home时,下面的组件显示
    {
        path: "",
        component: phone
    }
]

命名路由

  取名路由,很简短,因为遵照名字就可以领会,那个路由有二个名字,那就一向给那几个路由加三个name
属性,就能够了。 给user 路由加多个name 属性:

{
        path: "/user/:id",
        name: "user",
        component: user
}

  命名路由的行使, 在router-link 中to 属性就足以选用对象了, 

 <router-link to="/user/123">User123</router-link> // 和下面等价 

 <router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>   // 当使用对象作为路由的时候,to前面要加一个冒号,表示绑定

  编制程序式导航:那关键运用到按钮点击上。当点击按钮的时候,跳转另3个零部件,
那不得不用代码,调用rourter.push() 方法。 当们把router
注入到根实例中后,组件中经过 this.$router 能够拿走到router,
所以在组件中选取

this.$router.push(“home”), 就足以跳转到home界面

 

本文章摘要自:     
如有侵权请联系博主删除

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有