我不相信没有.
这就是说你可以通过通配符路线,这样可以为你提供另一种选择.
我建立了一个网站,后端(以及创建的页面)通过CMS控制,后者将所有页面作为JSON提供给Vue.这意味着Vue不知道后端正在创建的路由.
相反,我们通过单个*通配符组件将所有CMS页面传递给Vue Router.在Vue Router 2中,这看起来像:
const routes = [
{ path: '*', component: AllPages }
]
这些允许您设置各种条件,因此,虽然您不能将通过ajax传回的对象注入路由器,但您可以将动态组件添加到通配符匹配的AllPages组件.这将允许您通过ajax请求传递要加载的组件的名称,然后在调用页面时加载该组件.即
您的Ajax响应:
{
// url: component name
'/about/': 'about',
'/about/contact/': 'contact',
...
}
然后在AllPages vue组件中:
module.exports = {
data () {
return {
currentView: '',
ajaxRoutes: {}, // loaded via ajax GET request
...
}
},
// watch $route to detect page requests
watch: {
'$route' (to, from) {
if (this.ajaxRoutes[to]) {
this.currentView = this.ajaxRoutes[to]
}
}
},
...
}
以上是一个相当简短的想法,但基本上您可以根据用户请求的路径动态加载组件.