使用Knockout JS / Jquery在网页之间传递变量的最佳实践

时间:2011-07-12 10:22:51

标签: jquery ajax seo query-string knockout.js

我正在使用Jquery在knockoutJS中编写一个简单的Web应用程序。如果你想象它将由3个主要页面组成(还有更多,但让它保持简单):

  • 登录页面
  • 客户页面
  • 上一个订单页面

每个页面包含不同的javascript包含,并具有不同的CSS样式。最初我使用的是ASP MVC,其路线如下:

  • /登录
  • /客户/ {客户ID}
  • /客户/ {客户ID} /订单/

现在我纯粹使用KnockoutJS页面实际上是:

  • 的login.html
  • 客户homepage.html
  • 客户orders.html

现在,当我登录时,这是问题的症结所在。我联系了一个Web服务(旧的asp mvc暴露为JSON的东西),然后想要将用户重定向到客户页面,但希望他们了解customerId。

因此,一旦来自登录的ajax请求返回有效用户ID,我就需要以某种方式使用变量重定向到下一页。我在思考:

location.href = "customer-homepage.html?customerId=1";

然而感觉有点脏,我不知道这种方法是否适合SEO目的,因为大多数SEO焦点似乎都在网址上,所以理想情况下它应该像asp mvc路线。

这让我开始考虑将其作为一个单页应用程序,但使用hashbang重定向,因为我希望能够在页面之间徘徊而不是完整的回发。但是我需要从内存中卸载一些JS / CSS然后加载更新的东西。

我知道这是一个非常愚蠢的问题,但从我可以看到我的选择是:

  • 使用带有查询字符串数据的重定向请求
  • 使用一个页面应用程序,它将是伟大的,但需要解决内存中现有资源(JS / CSS)的卸载

1 个答案:

答案 0 :(得分:0)

我正在构建一个类似的网络应用程序,我个人认为如果你还有三个页面,这将是一个很好的应用程序逻辑分离。淘汰赛所做的一切基本上都是让你的观点(html)更加笨重(正如MVVM推荐的那样)。并使您的观点能够接管用户的互动。

但你的建议似乎与一个具有不同视图模型的视图类似,这是不被禁止的,但我认为调试这样的应用程序会更难。

要将信息提供到另一个页面,只需使用customerId执行POST,然后您的服务器端逻辑就可以使用该信息来执行应用程序所需的任何操作。

我个人认为这会解决你所有的问题,但话说回来,这可能不是一个答案而是一个意见,你决定:)