结合webpack使用vue-router

结合webpack使用vue-router

1、cnpm i vue-router -S

2、在main.js中导入vue-router包,手动安装VueRouter

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

3、在main.js中导入各个Vue组件

4、创建路由对象

5、将路由对象挂载到vm上

注意:

1、render会把el指定的容器中 的所有的内容都清空覆盖,所以不要把路由的router-view 和router-link直接写到el所控制的元素中; 

2、App这个组件,是通过vm实例的render函数渲染出来的;render函数如果要渲染组件,渲染出来的组件,只能放到el: '#app'所指定的元素中;

3、Account和GoodsList组件,是通过路由匹配监听到的,所以,这两个组件,只能展示到属于路由的<router-view></router-view>中去;

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">

    </div>
</body>
</html>

main.js

// main.js 是项目的JS入口文件
import Vue from 'vue';
// 导入vue-router包
import VueRouter from 'vue-router';
// 手动安装VueRouter
Vue.use(VueRouter);

import app from './App.vue';
import account from './main/Account.vue';
import goodslist from './main/GoodsList.vue';

// 创建路由对象
var router = new VueRouter({
    routes: [
        { path: '/account', component: account },
        { path: '/goodslist', component: goodslist }
    ]
})

var vm = new Vue({
    el: '#app',
    data: {
        msg: '1234'
    },
    render: c => c(app),
    // 将路由对象挂载到vm上
    router 
})

App.vue

<template>
    <div>
        <h1>App组件</h1>
        <router-link to="/account">Account</router-link>
        <router-link to="/goodslist">GoodsList</router-link>

        <router-view></router-view>
    </div>
</template>

<script>
export default {
    
}
</script>

<style>

</style>

结合webpack实现children子路由

main.js

// main.js 是项目的JS入口文件
import Vue from 'vue';
// 导入vue-router包
import VueRouter from 'vue-router';
// 手动安装VueRouter
Vue.use(VueRouter);

import app from './App.vue';
import account from './main/Account.vue';
import goodslist from './main/GoodsList.vue';
// 导入account的子路由组件
import login from './subcom/login.vue';
import register from './subcom/register.vue';
// 创建路由对象
var router = new VueRouter({
    routes: [
        {
            path: '/account',
            component: account,
            children: [
                { path: 'login', component: login },
                { path: 'register', component: register }
            ]
        },
        { path: '/goodslist', component: goodslist }
    ]
})

var vm = new Vue({
    el: '#app',
    data: {
        msg: '1234'
    },
    render: c => c(app),
    // 将路由对象挂载到vm上
    router 
})

Account.vue

<template>
    <div>
        <h1>Account组件</h1>
        <router-link to="/account/login">登陆</router-link>
        <router-link to="/account/register">注册</router-link>

        <router-view></router-view>
    </div>
</template>

<script>
export default {
    
}
</script>

<style>

</style>

抽离路由模块

在src文件夹下,建一个router.js文件,路由相关的都放在这个文件里面

main.js

// main.js 是项目的JS入口文件
import Vue from 'vue';
// 导入vue-router包
import VueRouter from 'vue-router';
// 手动安装VueRouter
Vue.use(VueRouter);
// 导入app组件
import app from './App.vue';
// 导入自定义的路由模块
import router from './router.js';
var vm = new Vue({
    el: '#app',
    data: {
        msg: '1234'
    },
    render: c => c(app),
    // 将路由对象挂载到vm上
    router 
})

router.js

import Vue from 'vue';
// 导入vue-router包
import VueRouter from 'vue-router';
// 手动安装VueRouter
Vue.use(VueRouter);

import account from './main/Account.vue';
import goodslist from './main/GoodsList.vue';
// 导入account的子路由组件
import login from './subcom/login.vue';
import register from './subcom/register.vue';
// 创建路由对象
var router = new VueRouter({
    routes: [
        {
            path: '/account',
            component: account,
            children: [
                { path: 'login', component: login },
                { path: 'register', component: register }
            ]
        },
        { path: '/goodslist', component: goodslist }
    ]
})

// 把路由对象暴露出去
export default router

猜你喜欢

转载自blog.csdn.net/sleepwalker_1992/article/details/81461852
今日推荐