Vue-router

2019-05-02  本文已影响0人  Grayly吖

Vue路由详解

一、Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。

二、路由配置步骤

(1)安装路由

      npm install vue-router --save

(2)在src目录下新建router文件夹,并创建index.js文件

(3)在src目录下新建views文件夹放置四个组件

(4)在router文件夹中的index.js文件中为上面的四个组件配置路由

/**
 * 配置vue-router
 */
 import Vue from 'vue';  //导入Vue
 import VueRouter from 'vue-router';  //导入vue-router

 // 使用插件,用use(使路由在vue中生效)
 Vue.use(VueRouter);

// 路由的数组
const routes = [
    {
        // 访问路径
        path: '/film',  //根路由 和 根路由下的film路由
        // 访问/film,显示以下的组件
        component:()=>import('@/views/film'),
    },
    {
        path: '/cinema',
        component:()=>import('@/views/cinema')
    },
    {
        path: '/pintuan',
        component:()=>import('@/views/pintuan')
    },
    {
        path: '/my',
        component:()=>import('@/views/my')
    }
]
// 创建路由的实例,参数是个对象
const router = new VueRouter({
    routes: routes
});

export default router;  //导出路由

(5)配置main.js文件,导入router文件夹中的index.js

import Vue from 'vue';
import App from './App.vue';
import router from './router/index';  //1、导入router文件夹中的index.js

new Vue({
    router,   // 2、添加router
    render: h=>h(App)
}).$mount('#app');

(6)启动项目,查看路由是否配置成功

    npm serve ./src/main.js

三、router-view 和 router-link

(1)router-view

(2)router-link

   <router-link to='路由地址'>{ 内容 }</router-link>

四、配置根路由 和 404页面

(1)配置根路由

    {
        //配置根路由
        path: '/',
        //重定向
        redirect: '/film/nowList'
    },

(2)配置404页面

    {
        // 404页面配置
        path: '*',
        component: ()=>import('@/components/NotFound')
    }

五、路由传参

1、设置动态路由(使用router-link传参)

(我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个detail电影详情组件,对于所有filmId各不相同的电影,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果)

            {
                path: 'details/:filmId',
                component: () => import('@/views/film/details')
            }

router-link跳转时携带参数(filmId是变量,所以要给to绑定属性,并且使用反引号)

       <router-link :to="`/film/details/${film.filmId}`" ></router-link>
      let filmId = this.$route.params.filmId;
2、通过$router.push传参(编程式导航传参)
    //列表页面传数据
       this.$router.push({
             path:'/film/detail'
             query: {
                      name: '复仇者联盟4',
                      filmId: 'djaojgfaikoj';
           }})
    //detail页面接收
     let filmId= this.$route.query.filmId;
    //列表页面传数据
       this.$router.push({
             name:'detail'
             params: {
                      name: '复仇者联盟4',
                      filmId: 'djaojgfaikoj';
           }})
    //detail页面接收
     let filmId= this.$route.params.filmId;
3、总结
上一篇 下一篇

猜你喜欢

热点阅读