将路由器配置放在Aurelia的单独文件中

Gol*_*ole 6 javascript module ecmascript-6 aurelia

我试图从app.js文件中取出路由器配置并将其放在一个单独的文件中(app.router.js).这可能是一件容易的事,但我不知道该怎么做.

当前app.js文件如下所示:

import {Router} from 'aurelia-router';

export class App {

  static inject() { return [Router]; };

  constructor(router) {

    this.router = router;

    // router - put this part in a separate file
    this.router.configure(config => {

      config.title = 'demo';
      config.options.pushState = true;
      config.map([

        // home routes
        { route: ['','home'], moduleId: './home/home', nav: true, title:'Home' },

        // User routes
        { route: ['user/register'], moduleId: './user/register', nav: true, title:'User Registration'}

      ]);

    });

  }
}
Run Code Online (Sandbox Code Playgroud)

一旦配置部分在一个单独的文件中,我相信我已经这样称呼它app.js:

this.router.configure(myRouterConfig);
Run Code Online (Sandbox Code Playgroud)

请通过代码示例告诉我如何操作.

Jor*_*ing 9

当您意识到传递给的参数this.router.configure只是一个函数时,解决方案更容易理解.要将路由器配置放在单独的文件中,只需让该文件导出一个带有一个参数(config)的函数.

// app.router.js
export default function (config) {
  config.title = 'demo';
  config.options.pushState = true;

  config.map([
    // home routes
    { route: ['','home'], moduleId: './home/home', nav: true, title:'Home' },
    // User routes
    { route: ['user/register'], moduleId: './user/register', nav: true, title:'User Registration'}
  ]);      
}
Run Code Online (Sandbox Code Playgroud)

然后,在app.js:

import appRouter from 'app.router';

// ...then...
this.router.configure(appRouter);
Run Code Online (Sandbox Code Playgroud)

当然,你可以命名appRouter任何你想要的东西.