今天第一次学习VueRouter就出了一个坑让我弄了两个小时
报错如下
在这里插入图片描述
代码如下

<div id="app">
    <!--router-link来指定跳转的路径-->
    <span><router-link to="/login">登录</router-link></span>
    <span><router-link to="/register">注册</router-link></span>
    <hr/>
    <div>
        <!--vue-router的锚点-->
        <router-view></router-view>
    </div>
</div>
<!--引入vue-router对象-->
<script src="../node_modules/vue-router/dist/vue-router.js"></script>
<script src="../node_modules/vue/dist/vue.js"></script>
<script src="user/login.js"></script>
<script src="user/register.js"></script>
<script type="text/javascript">

    // 创建VueRouter对象
    const router = new VueRouter({
        routes:[ // 编写路由规则
            {
                path:"/login", // 请求路径
                component:loginForm // 组件名称
            },
            {path:"/register",component:registerForm},
        ]
    })

    var vm = new Vue({
        el: "#app",
        components: {
            loginForm,
            registerForm
        },
        router // 引用上面定义的router对象
    })
</script>

到网上查,到书上找,原来是没有手动调用Vue.use(VueRouter)。以前习惯了在文件头部直接引入vue.js和vue-router.js,这种方式下,在vue-router内部会检测window.Vue对象是否存在,如果存在就会自动调用Vue.use()方法,否则需要手动调用Vue.use(VueRouter)来确保路由插件注册到Vue中。在支持AMD环境中,Vue对象并不会暴露到全局window对象中,而是会通过define()形式输出和引入,因此需要手动注册。

<script type="text/javascript">

    // 创建VueRouter对象
    const router = new VueRouter({
        routes:[ // 编写路由规则
            {
                path:"/login", // 请求路径
                component:loginForm // 组件名称
            },
            {path:"/register",component:registerForm},
        ]
    })

 **Vue.use(VueRouter);**

    var vm = new Vue({
        el: "#app",
        components: {
            loginForm,
            registerForm
        },
        router // 引用上面定义的router对象
    })
</script>

加粗内容加上即可

Logo

前往低代码交流专区

更多推荐