5
私はExpress JSを使用していますが、Djangoのreverse
機能に似た機能が必要です。私はルートを持っているのであれば、例えば、Express JSの逆URLルート(Djangoスタイル)
app.get('/users/:id/:name', function(req, res) { /* some code */ })
のために私は例
reverse('/users/:id/:name', 15, 'John');
かさえ私にURL /users/15/John
を与えるであろう
reverse('/users/:id/:name', { id : 15, name : 'John' });
よりよいのための機能を使用したいです。そのような機能は存在しますか?そうでない場合は、そのような関数を書く方法を知っていますか(Expressのルーティングアルゴリズムを考慮して)?私はちょうどルーティングのための他の問題に沿ってこれを解決したパッケージ
reversable-routerを作成しました
function reverse(url, obj) {
return url.replace(/(\/:\w+\??)/g, function (m, c) {
c=c.replace(/[/:?]/g, '');
return obj[c] ? '/' + obj[c] : "";
});
}
reverse('/users/:id/:name', { id: 15, name: 'John' });
reverse('/users/:id?', { id: 15});
reverse('/users/:id?', {});
私はこのような何かについて考えた(そして実際に私はこの単純なケースを実装していた)が、unfortunetly Expressは ''を使用しています特殊文字として?。これは、URLの '/ users /:id?'の '/ users'と'/users/1'の両方にマッチするので、少し複雑になります。 – freakish
更新。それはあなたが欲しいものですか? – cababunga
ええ、私はそれが仕事をすると思います。ありがとう! – freakish