Reputation: 503
I am trying to take out router configuration from app.js
file and put it in a separate file (app.router.js
). This is probably an easy thing to do but I don't know how to do it.
Current app.js
file looks like this:
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'}
]);
});
}
}
Once the configuration part is in a separate file, I believe I have call it like this in app.js
:
this.router.configure(myRouterConfig);
Please let me know how to do it with code example.
Upvotes: 6
Views: 1862
Reputation: 106027
The solution is easier to understand when you realize that the argument you pass to this.router.configure
is just a function. To put your router configuration in a separate file, just have that file export a function that takes one argument (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'}
]);
}
Then, in app.js
:
import appRouter from 'app.router';
// ...then...
this.router.configure(appRouter);
You can, of course, name appRouter
anything you want.
Upvotes: 9