0

自从我开始 asp.net mvc 开发以来,我的经验几乎是 80% 的 jQuery,只有 20% 的 C#。

现在我开始使用 Knockout.js 来让自己更好地控制页面上的视图。

我现在面临的问题是:我应该向浏览器提供“sceleton 标记页面”并通过 ajax 调用加载所有数据,这反过来会填充 js viewmodel 对象和视图,还是应该最初通过部分填充数据查看,并使用js页面数据管理进行后续客户端体验?

现在我正在做后者,但这需要我编写两个数据检索/显示逻辑 - 一个在 js 中,一个在 mvc razor 视图中。

我不打算支持禁用 js 的浏览器,所以也许我应该通过 js 淘汰视图模型初始化来做所有事情?

4

2 回答 2

1

还有许多额外的变量。

  1. 您的应用将来应该每秒处理多少个请求?如果很多,那么通过生成整页,也许您可​​以缓存生成的网页,从而减少服务器上的负载。
  2. 你有什么样的客户?如果它们很慢(如低成本手机),那么在客户端生成完整的 HTML 可能会很慢。
  3. 您的客户是否喜欢慢速网络的快速响应?通过完整的服务器页面生成,您可以实现更少的请求和更快的响应。

另一方面,如果这是一个内部部门级别的业务应用程序,具有良好的网络、较少的请求和良好的客户端计算机,那么您肯定可以使用最少的初始页面并使用 AJAX 填充所有内容。此外,正如 Arbiter 所指出的,JSON 的大小可以比 HTML 小,因此如果您有大量数据,则可以通过 JSON 保存在网络上。

还有中间的第三种方式。您可以生成 JSON 数据并将它们直接嵌入网页中(如<script>CallMyJSGenerateMethod({generatedJSON: "goes here"})</script>)。这样,您将只有一个 (JavaScript) 程序用于 HTML 生成、少量请求(数据量更少)和缓存网页的能力。不过,你必须有一个好的客户,所以第 2 点仍然成立。

于 2012-07-15T14:54:36.777 回答
1

这更像是一种观点,但据我估计,这是我在构建 Web 应用程序时遇到的最常见问题:我是在服务器上使用 HTML/MVC 构建页面还是使用所有 JS?这里没有适合所有情况的明确正确答案。两者都是很好的选择。德米特里的观点也都是有效的。

其他需要考虑的事情是您是否需要在服务器上坚持使用 ASP.NET,或者是否将使用其他服务器技术(PHP?)。你的开发团队有什么技能?您正在创建的页面会在客户端发生很大变化,还是相对静态?

我个人倾向于客户端空间而不是服务器端生成,但这主要是一种偏好。

于 2012-07-15T18:15:27.610 回答