路由如何与Aurelia中的功能一起工作?

路由如何与Aurelia中的功能一起工作?,aurelia,Aurelia,假设我想使用Aurelia的功能。。。功能,使一个“用户”功能来管理用户,我对各种crud操作有不同的看法。如何组织创建读取更新删除的路由?这是在功能中完成的吗?是在应用程序中完成的吗?它们的一些组合?请提供一个例子。一个人不能简单地通过功能添加路由 但是,如果您正在构建一个更大的应用程序,您可以使用依赖项注入容器向您的应用程序公开一个“路由”对象,这些特性可以利用和扩展 main.js import { MyRouteConfig } from 'myRouteConfig'; @injec

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

一个人不能简单地通过功能添加路由

但是,如果您正在构建一个更大的应用程序,您可以使用依赖项注入容器向您的应用程序公开一个“路由”对象,这些特性可以利用和扩展

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
对象的实例

feature/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' }
    ])
}
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);
}

但是,这根本不是最佳做法。这充其量是对工具的巧妙使用,最糟糕的是一种黑客行为。这种方法有很多缺陷,包括难以加载正确的模块路径和重叠的路由,只有在您真正知道自己在做什么时才应该使用这种策略。也就是说,这是可以做到的。

您可以做到的是:

feature/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' }
    ])
}
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);
}

推荐的方法是什么?我想我很困惑,因为我有到一个子目录的路由,而这个子目录不是一个特性。但我正在考虑制作这些功能,并试图从路由的角度找出如何使用这些功能。如果有路由,那么这可能是应用程序不可分割的一部分。功能就像小型本地插件,模块化。不要将功能用于应用程序的组成部分。如果此答案对您有帮助,请进行投票,如果回答了您的问题,请接受。