我正在开发像 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/");
});