【问题标题】:All-js or initial markup by the frameworkAll-js 或框架的初始标记
【发布时间】:2015-10-11 02:47:09
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ajax asp.net-mvc razor knockout.js


    【解决方案1】:

    还有许多额外的变量。

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

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

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

    【讨论】:

    • 另外,因为 AJAX 传统上以 json 格式传输数据(没有结束标签),所以通过 ajax(带有额外的 javascript 和 HTTP 请求)返回 X 数量的记录小于返回它作为直接的 HTML。这是一个很大的固定成本,因此存在规模经济。有时一种方法更快,有时另一种更快。
    【解决方案2】:

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

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

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

    【讨论】:

    • 约翰,当我在看你关于 KnockoutJS 的复数视觉课程时,这个问题突然出现在我的脑海中。几个小时后,你在这里评论它。酷=)
    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多