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

Client side routing. How does it work?

本文关键字:工作 何工作 路由 客户端      更新时间:2023-09-26

我需要一个客户端路由解决方案与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时遇到的困难更普遍。

也使用哈希(由同一作者)。

Crossroads页面上的文档告诉您需要使用Hasher(因为它将用于监视寡妇)。地址栏)。

所以你还需要使用Hasher,并初始化它,然后你可以将你的"Crossroads"路由添加到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/

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

对于crossroads.parse('/news/123');,它总是使用/news/123

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

crossroads.parse(document.location.pathname);