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

标签 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'}

      ]);

    });

  }
}

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

this.router.configure(myRouterConfig);

请告诉我如何使用代码示例进行操作。

最佳答案

当您意识到传递给 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'}
  ]);      
}

然后,在 app.js 中:

import appRouter from 'app.router';

// ...then...
this.router.configure(appRouter);

当然,您可以将 appRouter 命名为任何您想要的名称。

关于javascript - 将路由器配置放在 Aurelia 的单独文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267619/

相关文章:

javascript - 从服务器上传并返回多个 HttpPostedFiles

javascript - .vue 文件中未定义的属性或方法

node.js - 如何在es6类中编写箭头函数?

reactjs - 在 ES6 中使用 Jest 测试 React Flux Store

python - pydoc 创建不完整的文档

javascript - 如何从对象数组中获取从未出现在特定属性中的值

javascript - 检查数组是否包含javascript中的null以外的内容?

javascript - 我想将父函数调用到包装在对象中的函数中

windows - 尝试为Python安装正则表达式

python - 如何找到似乎没有在任何地方定义的 python 模块?