【问题标题】:Put router configuration in a separate file in Aurelia将路由器配置放在 Aurelia 中的单独文件中
【发布时间】:2015-05-29 19:54:25
【问题描述】:

我正在尝试从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);

请通过代码示例告诉我如何做到这一点。

【问题讨论】:

    标签: javascript module ecmascript-6 aurelia


    【解决方案1】:

    当您意识到传递给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

    【讨论】:

    • 谢谢你,乔丹!这正是我所需要的!
    猜你喜欢
    • 2019-08-28
    • 2015-05-28
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    相关资源
    最近更新 更多