VueJS 路由器不加载组件
VueJS Router doesn't load the component
我正在使用 VueJS 路由器,但路由器没有加载组件。
我有 About.vue 和 Contact.vue 只是带有要测试的标签 - 以下是它的样子:
<template>
<div>
<h1>Contact page. Welcome baby!</h1>
</div>
</template>
这是 App.vue,具有三个路由器链接和路由器视图。
<template>
<div>
<h1>Routing</h1>
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
<router-link to="/contact">Contact</router-link>
<router-view></router-view>
</div>
</template>
这是main.js(导入文件路径正确)
import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'
import {routers} from './router'
Vue.use(VueRouter);
let router = new VueRouter({mode: 'history', routers});
new Vue({
el:'#app',
router,
components: {
'app-home' : App
}
});
这是路由器的JS文件。 router.js(路径正确)
import About from './About.vue'
import Contact from './Contact.vue'
import Home from './App.vue'
export const routers=[
{
path: '/' , component: Home
},
{
path:'/about',component:About
},
{
path:'/contact',component:Contact
}
]
而且,这是 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>router</title>
</head>
<body>
<div id="app">
<app-home></app-home>
</div>
<script src="/dist/build.js"></script>
</body>
</html>
当我加载页面时,主页面如下所示:
当我点击每个导航时,除了 URL 之外,主页没有任何变化。
URL 变为
http://localhost:8080/contact
http://localhost:8080/about
但没有加载我导入的组件。
如果您需要更多信息来提供建议,请随时询问更多。
如果您对这个问题有任何线索,请在此分享。
谢谢。
VueRouter
期望的对象键称为 routes
,您正在传递它 routers
。
试试这个...
let router = new VueRouter({mode: 'history', routes: routers});
或者,将您的 "routers" 变量重命名为 "routes"。例如
export const routes=[
和
import {routes} from './router'
// snip
let router = new VueRouter({mode: 'history', routes });
我的症状与 OP 相同,但使用的是 netlify 和 gridsome(使用 vue.js。在我的情况下,原因是联系表标记不正确。
在我的例子中,我必须使用 "Manually select features"
创建一个新的 Vue 项目 (vue create Project
);然后我不得不标记 "Router"
.
之前我创建了一个带有默认值的项目,并且单独安装了路由器 (npm install vue-router
) - 但最后路由没有加载组件。
ps。我使用:
- npm 6.14.6
- nodejs v12.18.3
- @vue/cli 4.5.4
我正在使用 VueJS 路由器,但路由器没有加载组件。
我有 About.vue 和 Contact.vue 只是带有要测试的标签 - 以下是它的样子:
<template>
<div>
<h1>Contact page. Welcome baby!</h1>
</div>
</template>
这是 App.vue,具有三个路由器链接和路由器视图。
<template>
<div>
<h1>Routing</h1>
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
<router-link to="/contact">Contact</router-link>
<router-view></router-view>
</div>
</template>
这是main.js(导入文件路径正确)
import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'
import {routers} from './router'
Vue.use(VueRouter);
let router = new VueRouter({mode: 'history', routers});
new Vue({
el:'#app',
router,
components: {
'app-home' : App
}
});
这是路由器的JS文件。 router.js(路径正确)
import About from './About.vue'
import Contact from './Contact.vue'
import Home from './App.vue'
export const routers=[
{
path: '/' , component: Home
},
{
path:'/about',component:About
},
{
path:'/contact',component:Contact
}
]
而且,这是 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>router</title>
</head>
<body>
<div id="app">
<app-home></app-home>
</div>
<script src="/dist/build.js"></script>
</body>
</html>
当我加载页面时,主页面如下所示:
当我点击每个导航时,除了 URL 之外,主页没有任何变化。 URL 变为
http://localhost:8080/contact
http://localhost:8080/about
但没有加载我导入的组件。
如果您需要更多信息来提供建议,请随时询问更多。 如果您对这个问题有任何线索,请在此分享。
谢谢。
VueRouter
期望的对象键称为 routes
,您正在传递它 routers
。
试试这个...
let router = new VueRouter({mode: 'history', routes: routers});
或者,将您的 "routers" 变量重命名为 "routes"。例如
export const routes=[
和
import {routes} from './router'
// snip
let router = new VueRouter({mode: 'history', routes });
我的症状与 OP 相同,但使用的是 netlify 和 gridsome(使用 vue.js。在我的情况下,原因是联系表标记不正确。
在我的例子中,我必须使用 "Manually select features"
创建一个新的 Vue 项目 (vue create Project
);然后我不得不标记 "Router"
.
之前我创建了一个带有默认值的项目,并且单独安装了路由器 (npm install vue-router
) - 但最后路由没有加载组件。
ps。我使用:
- npm 6.14.6
- nodejs v12.18.3
- @vue/cli 4.5.4