我正在使用 Jquery 在 knockoutJS 中编写一个简单的 Web 应用程序。如果您想象它将由 3 个主要页面组成(还有很多,但让我们保持简单):
- 登录页面
- 客户页面
- 以前的订单页面
每个页面包含不同的javascript includes,并且有不同的CSS样式。最初我为此使用 ASP MVC,路由如下:
- /登录
- /客户/{customerId}
- /客户/{customerId}/订单/
现在我纯粹使用 KnockoutJS,页面实际上是:
- 登录.html
- customer-homepage.html
- 客户订单.html
这就是问题的症结所在,当我登录时。我联系了一个网络服务(旧的 asp mvc 东西公开为 JSON),然后想将用户重定向到客户页面,但希望他们知道客户 ID。
因此,一旦来自登录的 ajax 请求返回了有效的用户 ID,我就需要以某种方式使用变量重定向到下一页。我的思路是:
location.href = "customer-homepage.html?customerId=1";
但是感觉有点脏,我不知道这种方法是否适合 SEO 目的,因为大多数 SEO 关注点似乎都在 url 上,因此理想情况下它应该看起来像 asp mvc 路由。
这让我开始考虑将其作为单页应用程序来做,但使用 hashbang 进行重定向,因为我希望能够在页面之间切换而不是进行完整的回发。然而,我需要从内存中卸载一些 JS/CSS,然后加载更新的内容。
我知道这是一个非常模糊的问题,但据我所知,我的选择是:
- 使用带有查询字符串数据的重定向请求
- 使用单页应用程序,这很好,但需要解决内存中现有资源(JS/CSS)的卸载问题
最佳答案
我正在构建一个类似的网络应用程序,我个人认为如果您仍然有三个页面,那么应用程序逻辑将是一个很好的分离。所有 knockout 所做的基本上都是让你的 View (html)更加愚蠢(正如 MVVM 所建议的那样)。并授权您的 View 接管用户的交互。
但是您的建议似乎类似于拥有一个 View 和不同的 View 模型,这并不被禁止,但我认为调试这样的应用程序会更难。
要将信息提供给另一个页面,只需使用 customerId 执行 POST
,然后您的服务器端逻辑可以使用该信息来执行应用程序需要的任何操作。
我个人认为这会解决你所有的问题,但话又说回来,这可能不是答案而是意见,你决定:)
关于jquery - 使用 Knockout JS/Jquery 在网页之间传递变量的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662705/