骨干路由与州

时间:2013-07-10 14:34:58

标签: backbone.js routing state

有些州很容易映射到路线。例如:

'users/:id'  -->  #users/123

这里的状态只是一个简单的整数,因此很容易创建一个合理的路由并将该状态传递给路由处理程序。

但是当你的状态更复杂时应该使用什么策略(例如JSON对象,数组数组等)?

我注意到Gmail会将其状态“标记”为看似基数为64的编码令牌,例如像这样的东西:

#inbox/h223r488v8vHh4fa9a9qyUTkmb9334mN9O2s8

......然后我想象它会以某种方式将该令牌反转回有意义的状态,但这个过程让我感到困惑。


相关:http://lostechies.com/derickbailey/2011/12/27/the-responsibilities-of-the-various-pieces-of-backbone-js/

1 个答案:

答案 0 :(得分:1)

为什么不使用base64 javascript库?那里有一吨。 Here's one。确定在编码之前需要JSON.stringify,之后需要JSON.parse

如果它已经在URL中,那么你只需解码它。然后你不需要存储它,你可以解码和编码。

 routes: {
     'encoded/:code': 'decode'
 },
 decode: function(code) {
     // using the linked library
     var decoded = window.atob(code);
     // do what you want
 }

base64内置于某些浏览器中:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding