meteor routing dry iron-router

Enrutador de hierro de meteoro: enrute varias rutas a una plantilla pero siga SECO



routing dry (2)

Quiero enrutar varias rutas a la misma plantilla. Por ejemplo, /abc/home y /home mostrarán la plantilla de home . Las rutas también pueden tener subcampos, por lo que abc/parent/child y /parent/child deben enrutar a la misma ruta.

  1. Puedo simplemente repetir :

    Router.route(''/home'', function () { this.render(''home''); Session.set(''menu'', ''home''); }); Router.route(''/abc/home'', function () { this.render(''home''); Session.set(''menu'', ''home''); });

Pero no quiero repetirlo Si deseo cambiar la plantilla a la que dirigirme, solo quiero cambiarla una vez, para mayor comodidad y también para minimizar los errores.

  1. También puedo usar parámetros :

    Router.route(''/:_abc/:path'', function () { if(this.params._abc == ''abc'') { switch(this.params.path) { case ''home'': this.render(''home''); break; case ''someotherroute'': this.render(''someotherroute''); break; } } });

Pero esto, nuevamente, me repito. Además, puede haber subcampos, y no quiero definir el enrutamiento para /:_abc/:parent/:children y /:_abc/:grandparent/:parent/:children/: porque estará desordenado.

  1. También intenté usar Router.go() :

    Router.route(''/:_abc/:route'', function () { if(this.params._abc == ''abc'') { Router.go(''/'' + this.params.route); } });

Pero esto elimina el /abc/ de la url, que es indeseable en mi caso.

  1. La mejor solución que tengo ahora es usar una función compartida :

    var renderHome = function () { this.render(''home''); Session.set(''menu'', ''home''); } Router.route(''/home'', renderHome()); Router.route(''/abc/home'', renderHome());

¿Puedo hacer algo como especificar una matriz o una cadena separada por comas ?

Router.route([''/home'', ''/abc/home''], function () { this.render(''home''); Session.set(''menu'', ''home''); }); // or Router.route(''/home, /abc/home'', function () { this.render(''home''); Session.set(''menu'', ''home''); });

¿Cómo puedo enrutar de manera eficiente múltiples rutas a una plantilla, sin repetirme?


Use una expresión regular (regex) que coincida con /home y /abc/home .


Hice una segunda plantilla que solo incluye la primera. En tu caso, esto podría verse así:

<template name="abcHome"> {{> home}} </template>