vue中的路由

什么是路由?

当我们在根组件的时候,想点哪一个组价就可以挂载哪一个组件,实现这个功能的东西就是路由(动态地往根组件挂载)
在这里插入图片描述

vue-router配置

1.安装(官网

npm install vue-router --save / cnpm install vue-router --save

2.在(main.js)引入并vue.use(VueRouter)

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

3.配置路由

1.创建组件,在main.js中引入组件(也可以从其他文件import进来)

const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }

2.main.js定义路由(此段建议复制)

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar },
  { path:'*',redirect:'默认路径'}//重定向,当path为空的时候默认跳转的地址
]

3.main.js中实例化vue-router

const router = new VueRouter({
  routes // 此处是缩写,应该是: `routes: routes`(后面的router是第二步的router)
})

4.main.js中创建和挂载实例(这一步是吧上面实例化的router挂载到main.js的vue实例上)

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

5.将<router-view></router-view>放在App.vue(根组件模板)内

经过以上三步,vue的路由就配置完成!~
在url中输入需要进入的组件名(path)即可跳转到该组件中

也可以使用router-link做出类似超链接的点击,实现点击跳转:

<router-link to="/foo">去Foo</router-link>

路由实现页面跳转

1.使用js来实现跳转(常用):

this.$router.push({path:'/news/传值'})

2.使用命名路由进行跳转:
在main.js的配置路由部分给路由起个名字

const routes = [
      { path: '/content/:aid', component: Content ,name='content'},
    ]

通过这种方式跳转:
this.$router.push({name=‘content’,params:{userId:123}})

Vue动态路由和get传值

1.动态路由传值:

在跳转前页面的router-link的地方:(给to绑定属性,然后拼接需要传的值)

 <router-link :to="'/content/'+index">
                {{limt}}
            </router-link>

在main.js里面配置动态路由:(path里面对应地加上:aid)(此处的:aid只是给传过去的值取个名字)

const routes = [
  { path: '/content/:aid', component: Content },
]

在对应的跳转后界面获取动态路由传过来的值:

this.$route.params

2.get传值

在跳转前页面的router-link的地方:(给to绑定属性,然后拼接需要传的值)

 <router-link :to="'/content/?id='+index">
            {{limt}}
        </router-link>

在对应的跳转后界面获取get传过来的值:

this.$route.query

url的history模式

一般默认的路由跳转的url是hash模式,如:
http://180.168.156.212:4101/travel/#/shouye/shouye
可见,有很丑的#
因此,我们可以将其改为history模式:
在main.js的实例化VueRouter的地方:

const router = new VueRouter({
  routes,
  mode:'history'/*将hash改为history*/
})

就可以了

父子路由(路由的嵌套)

当我们想实现下面这种功能时:
在这里插入图片描述
组件里面又用到了路由
就可以用到“路由的嵌套”!

首先,在main.js里面将父组件和子组件都引入:
在这里插入图片描述
然后,在mian.js里面讲子路由定义在父路由内:
在这里插入图片描述
然后在父组件的左边加上跳转连接,在右边加上<router-view></router-view>
在这里插入图片描述
此时,在点击左边的链接的时候,右侧就会显示出子组件的内容了!~

路由的模块化

在项目中,main.js只有一个,因此,我们不需要将所有的东西都放在这里面,组件引入、路由引入等等。都可以分离出去为一个独立的文件,在main.js里面进行引入就可以了!~
步骤:

①在mian.js同级目录的地方,新建一个文件夹“router”

②然后在router里面建一个js文件,此处我命名为index.js
在这里插入图片描述
③在index.js中引入vue:

import Vue from "vue"

④将main.js里面的new vue以上,import Vue from 'vue'、import App from './App'以下的内容,全部剪切进index.js
注意!!!引入组件的路径从"./“变成了”…/"
在这里插入图片描述
⑤然后在index.js最后一行把这个router暴露出来:

export default router;

⑥最后,在main.js中引入这个index.js

import router from './router/index'
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值