私はBackbone、Sammy、SpinなどのJavascriptルーターに取り組んでいます。しかし、私の要件は非常に単純です。ルートのセットとそれに対応するコールバックを提供できるはずであり、リクエストに応じてブラウザのURLを処理できるはずです。
数字のみを処理する場合は:idを、一般的なスラッグを使用する場合は:slugを置き換えるにはどうすればよいですか?
私はこのコードを書きました:
core.route = function(route, options, callback) {
var url = options.hash;
var route_segments = route.split('/').length-1;
var hash_segments = url.split('/').length-1;
var route_matcher = new RegExp(route.replace(/:[^\/]+/g, '([\\w-]+)'));
if (url.match(route_matcher)) {
if (route_segments === hash_segments){
callback();
}
}
};
core.route('/work/:slug/:id/', options, function() {
alert("work/example/id");
});
core.route('/work/:id/', options, function() {
alert("work/id/");
});