客户端路由。它是如何工作的?

时间:2011-11-21 11:30:19

标签: javascript url-routing client-side

我需要一个客户端路由解决方案来使用Chrome应用。我研究了几个,crossroads.js似乎很合适。当我将它包含在我的html文件中时,它似乎不起作用;也就是说,如果我使用像

这样的代码
crossroads.addRoute('/news/{id}', function(id){  
  alert(id);  
});   
crossroads.parse('/news/123');

,页面提醒'123'但是如果我在浏览器的url栏中输入'/ news / 321',它会预先形成浏览器的默认操作,而不是警告'321'。我究竟做错了什么。 (另外,我意识到标题很广泛,但我相信我对crossroads.js的困难比crossroads.js更为普遍。这是作为一个例子。)

2 个答案:

答案 0 :(得分:8)

使用Hasher(由同一作者)也。

Crossroads页面上的文档告诉您需要使用Hasher,(因为它将用于监视widow.location栏。)。

因此您还需要使用Hasher并初始化它,然后您可以将您的“十字路口”路线添加到Hasher以开始监控这些特定路线。

//setup crossroads
crossroads.addRoute('foo');
crossroads.addRoute('lorem/ipsum');
crossroads.routed.add(console.log, console); //log all routes

//setup hasher
hasher.initialized.add(crossroads.parse, crossroads); //parse initial hash
hasher.changed.add(crossroads.parse, crossroads); //parse hash changes
hasher.init(); //start listening for history change

//update URL fragment generating new history record
hasher.setHash('lorem/ipsum');

http://millermedeiros.github.com/crossroads.js/

答案 1 :(得分:6)

命令parse告诉十字路口查看字符串并根据它执行操作。

因此,对于crossroads.parse('/news/123');,它将始终使用/news/123

由于您希望十字路口解析浏览器地址栏中的内容,因此您需要在解析方法中使用该值:

crossroads.parse(document.location.pathname);