路由如何与Aurelia中的功能一起使用?

时间:2016-08-08 23:22:52

标签: aurelia

假设我想使用Aurelia的功能...功能,制作一个“用户”功能来管理用户,我对各种crud操作有不同的看法。如何组织创建读取更新删除的路由?这是在功能中完成的吗?它是在应用程序中完成的吗?它的某种组合?请举例。

2 个答案:

答案 0 :(得分:1)

不只是通过功能添加路线。

但是,如果要构建更大的应用程序,则可以使用依赖注入容器来公开"路由"对应您的应用程序,哪些功能可以利用和扩展。

main.js

import { MyRouteConfig } from 'myRouteConfig';

@inject(MyRouteConfig)
export class App {

    constructor(config) {
        this.routes = config.routes;
    }

    configureRouter(config, router) {
        config.map(this.routes);
    }
}

通过传递Aurelia对象的configure函数引入一个特征。您可以使用Aurelia对象DI容器来获取MyRouteConfig对象的实例;

<强>特征/ index.js

import { MyRouteConfig } from '../myRouteConfig';

export function configure(aurelia) {

    let config = aurelia.container.get(MyRouteConfig);
    Array.prototype.push.apply(config.routes, [
        { route: 'feature', moduleId: 'feature/home' },
        { route: 'feature/edit', moduleId: 'feature/edit' }
    ])
}

然而,这根本不是最佳做法。它充其量只是巧妙地使用工具,最糟糕的是黑客。这种方法存在很多陷阱,包括加载正确的模块路径和重叠路径时遇到困难,如果你真的知道自己在做什么,那么你应该只使用这种策略。也就是说,它可以做到。

答案 1 :(得分:0)

您可以执行以下操作:

功能/index.js

import { FrameworkConfiguration } from 'aurelia-framework';
import { Router, RouteConfig } from 'aurelia-router';

export function configure(config: FrameworkConfiguration) {
   var router = config.aurelia.container.get(Router) as Router;
   let newRoute: RouteConfig = {
      route: 'login',
      name: 'login',
      moduleId: 'login/login',
      nav: true,
      title: 'Login'
   };
   router.addRoute(newRoute);
}