no hay fuera de la caja de mecanismo para eso. Sin embargo, puede imitar el estilo de Django así: defina el archivo urls.js
que contendrá una matriz de URL. En primer lugar comenzar con:
myviews.js
exports.Index = function(req, res, next) {
res.send("hello world!");
};
urls.js
var MyViews = require("mywviews.js");
module.exports = [
{ name : "index", pattern : "/", view : MyViews.Index }
]
Ahora en app.js (o lo que sea el archivo principal es) que necesita para enlace urls a Express. Por ejemplo así:
app.js
var urls = require("urls.js");
for (var i = 0, l = urls.length; i < l; i++) {
var url = urls[ i ];
app.all(url.pattern, url.view);
};
Ahora puede definir encargo ayudante (estilo Express 3.0):
var urls = require("urls.js"), l = urls.length;
app.locals.url = function(name) {
for (var i = 0; i < l; i++) {
var url = urls[ i ];
if (url.name === name) {
return url.pattern;
}
};
};
y se puede utilizar fácilmente en su plantilla. Ahora el problema es que no le da un mecanismo de creación de URL como en Django (donde puede pasar parámetros adicionales al url
). Por otro lado, puede modificar la función url
y ampliarla. Yo no quiero entrar en todos los detalles aquí, pero aquí es un ejemplo de cómo utilizar expresiones regulares (usted debe ser capaz de combinar éstos con las ideas juntos):
Express JS reverse URL route (Django style)
Tenga en cuenta que he publicado la pregunta, así que tuve el mismo problema hace algún tiempo. : D
Un par de cosas que puede consultar: [express-resource] (https://github.com/visionmedia/express-resource) para nombres consistentes, y compruebe cómo la locomotora implementa [urlFor] (http://locomotivejs.org/guide/datastores.html). –
Si alguna vez vuelve a este problema, eche un vistazo a [Shrinkroute] (http://npmjs.org/package/shrinkroute). Se mantiene activamente y funciona con Express 3. – gustavohenke
+1 de mí por mencionar a Django ['{% url%}'] (https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url) etiqueta de plantilla :) –