没有开箱机制是的。但是,您可以像这样模拟Django的风格:定义urls.js
文件,该文件将包含一组URL。首先下手:
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 }
]
现在app.js(或任何主要文件),你需要将网址绑定到Express。例如像这样:
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);
};
现在,您可以自定义助手(快车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;
}
};
};
,你可以轻松地使用它在你的模板。现在的问题是,它不会像Django那样为您提供奇特的URL创建机制(您可以将其他参数传递给url
)。另一方面,您可以修改url
函数并对其进行扩展。我不想去到所有的细节在这里,但这里是一个例子,如何使用正则表达式(你应该能够把这些结合在一起的想法):
Express JS reverse URL route (Django style)
注意,我张贴的问题,所以前段时间我也有同样的问题。 :D
您可能需要查看几件事:[express-resource](https://github.com/visionmedia/express-resource)以获得一致的命名,并查看机车如何实现[urlFor](http:///locomotivejs.org/guide/datastores.html)。 –
如果您再次遇到此问题,请查看[Shrinkroute](http://npmjs.org/package/shrinkroute)。它被积极维护,并与Express 3一起工作。 – gustavohenke
从我提到的Django ['{%url%}'](https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url)模板标签:) –