5

Express JSを使用していますが、Djangoの機能と同様の機能が必要reverseです。たとえば、ルートがある場合

app.get('/users/:id/:name', function(req, res) { /* some code */ } )

たとえば関数を使いたいのですが

reverse('/users/:id/:name', 15, 'John');

またはさらに良い

reverse('/users/:id/:name', { id : 15, name : 'John' });

これでURLがわかり/users/15/Johnます。そのような機能はありますか?そうでない場合は、(Expressのルーティングアルゴリズムを考慮して)そのような関数を作成する方法について何かアイデアがありますか?

4

2 に答える 2

7

ルーティングに関する他の問題とともにこれを解決するパッケージreversable-routerを作成しました。

readme の例:

app.get('/admin/user/:id', 'admin.user.edit', function(req, res, next){
    //...
});

//.. and a helper in the view files:
url('admin.user.edit', {id: 2})
于 2012-10-15T09:46:17.993 に答える
7

コードは次のとおりです。

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?', {});
于 2012-04-05T17:13:05.173 に答える