【发布时间】:2017-10-09 14:41:39
【问题描述】:
从 Angular 2/4 开始,我们会像这样进行路由:
guide.component.ts:
@Component({
selector: 'app-guide',
templateUrl: './guide.component.html',
styleUrls: ['./guide.component.scss']
})
export class GuideComponent implements OnInit, OnDestroy {
guide-routing.module.ts:
const routes: Routes = [
{
path: 'guide/:layout',
component: GuideComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class GuideRoutingModule { }
guide.module.ts:
@NgModule({
imports: [
CommonModule,
// Routing comes last
GuideRoutingModule
我认为这是一种非常好的方式,因为无论什么消耗 GuideComponent 都不必关心什么、如何或是否有路线。
在 Vue 中,我们不得不将路由一直向下传递到 app.ts:
detail.component.ts:
@Component({
template,
name: 'Detail',
components: {
Something
}
})
export class Detail extends Vue {
detail.route.ts:
export const detailRoute: RouteConfig = {
path: '/detail/:id',
component: Detail,
props: (route: Route) => ({
state: route.query.state
})
};
component.routes.ts:
export const componentRoutes = [
detailRoute
];
core.route.ts:
export const coreRoute = {
path: '/',
component: Core,
props: (route: Route) => ({
showPlayer: route.query.player === 'true' || !route.query.player
}),
children: [
...componentRoutes
]
};
app.ts:
const router = new VueRouter({
routes: [coreRoute]
});
// Bootstrap Vue app
export default new Vue({
store,
router,
有没有更好/更清洁的方法来做到这一点?也许这样组件就消耗了路由本身,并且路由不必沿着层次结构向下移动?
【问题讨论】:
标签: typescript vue.js vuejs2 vue-component vue-router