Vue使用router

1、安装

npm i vue-router -s

2、在src目录下的components里面创建组件page1、page2、page3

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

3、定义和

在App.vue页面定义 router-link 和 router-view

<template>
  <div id="app">
    <!-- router-link 定义点击后导航到哪个路径下 -->
    <router-link to="/page1">Page1</router-link>
	<router-link to="/page2">Page2</router-link>

    <!-- 对应的组件内容渲染到router-view中 -->
    <router-view></router-view>   
  </div>
</template>

<script>
export default {
  
}
</script>

4、创建router.js

在 src目录下新建router目录,里面创建index.js定义router, 就是定义 路径到 组件的 映射。

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

// 引入组件
import page1 from "../components/page1.vue";
import page2 from "../components/page2.vue";

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

const routes = [
    {
        path:"/page1",
        component: page1
    },
    {
        path: "/page2",
        component: page2
    },
  	// 换种方式引入组件
  	{
		path: '/page3',
		component: r => require.ensure([], () => r(require('../components/page3.vue')), 'page3'),
	}
]

var router =  new VueRouter({
    routes,
  	mode: 'history'//跳转时候链接地址会添加“#”,导致无法跳转,添加mode:'history'
})
export default router;

5、注册实例

把路由注入到根实例中,启动路由。这里其实还有一种方法,就像vuex store 注入到根实例中一样,我们也可以把vueRouter 直接注入到根实例中。在main.js中引入路由,注入到根实例中。

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

// 引入路由
// import router 的router 一定要小写, 不要写成Router, 否则报 can't match的报错
import router from './router';
Vue.use(router);  

new Vue({
  el: '#app',
  router,  // 注入到根实例中
  render: h => h(App)
})

6、 重定向默认页面

现在点击页面page1和page2可以来回切换,但是首次进入页面是空白的,因为首次进入时候没有路径是空的,没有指定页面,这时候需要重定向页面。

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

7、嵌套路由

嵌套路由就是
进入到page1页面的时候,它下面还有分类,如手children1页面,children2页面,children3页面
当我们点击各个分类的时候,它还是需要路由到各个部分,如children1,它肯定到对应到children1页面。

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

<template>
    <div>
  		<!-- router-link 的to属性要注意,路由是先进入到page1,然后才进入相应的子路由如 children1,所以书写时要把 page1 带上 -->
        <h1>page1</h1>
        <p>
            <router-link to="/page1/children1">children1</router-link>
            <router-link to="/page1/children2">children2</router-link>
            <router-link to="/page1/children3">children3</router-link>
        </p>
        <router-view></router-view>
    </div>
</template>

配置page1的router,它的children中对应的路由path 是空 ‘’,完整的childrens 如下:

children: [
    {
        path: "children1",
        component: children1
    },
    {
        path: "children2",
        component: children2
    },
    {
        path: "children3",
        component: children3
    },    
    {
      	// 当进入到page1时,下面的组件显示
        path: "",
        component: children1
    }
]
Vue.js是一个渐进式的JavaScript框架,它提供了一系列的工具和API,用于构建用户界面。Vue.jsRouter是一个官方提供的插件,它允许我们在Vue.js应用中实现路由功能。 Vue.jsRouter插件可以让我们将不同的组件映射到不同的URL上,从而实现页面之间的跳转和刷新。在Vue.js应用中使用Router插件,我们需要先安装和引入它,然后在Vue实例中使用它。 步骤如下: 1. 安装Vue.jsRouter插件 可以使用npm进行安装: ``` npm install vue-router ``` 2. 引入Vue.jsRouter插件 在Vue.js应用的入口文件中引入Vue.jsRouter插件: ``` import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter) ``` 3. 配置路由 创建一个路由配置文件,用于定义路由和对应的组件,然后导出路由实例: ``` 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({ mode: 'history', routes }) export default router ``` 在上面的例子中,我们定义了两个路由,分别对应了两个组件:Home和About。路由实例通过VueRouter构造函数创建,其中mode属性用于定义路由模式,history模式可以让我们使用HTML5 History API来管理路由。 4. 使用路由 在Vue.js应用的根实例中使用路由: ``` import Vue from 'vue' import App from './App.vue' import router from './router' new Vue({ router, render: h => h(App) }).$mount('#app') ``` 在上面的例子中,我们将路由实例作为根实例的router选项,这样就可以在组件中使用router实例的API来实现路由功能了。 例如,在Home组件中可以添加一个链接,用于跳转到About组件: ``` <template> <div> <h1>Home</h1> <router-link to="/about">About</router-link> </div> </template> <script> export default { name: 'Home' } </script> <style> </style> ``` 在About组件中可以添加一个返回链接,用于返回到Home组件: ``` <template> <div> <h1>About</h1> <router-link to="/">Home</router-link> </div> </template> <script> export default { name: 'About' } </script> <style> </style> ``` 使用Vue.jsRouter插件可以让我们更方便地实现路由功能,从而提高应用的可用性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值