在JavaScript中使用部分视图或生成HTML?

时间:2013-05-12 08:20:00

标签: javascript asp.net-mvc

我在asp.net mvc上有一个项目。

在某些情况下,当用户执行某些操作时,应更新html页面的一部分。不应重新加载整个页面。例如,应该加载用户点击产品类别,并加载带有新产品的html标记。

最佳做法是什么 - 使用部分视图和Ajax.ActionLink更新部分视图产品,或使用$ .ajax接收有关产品的信息,然后在javascript中生成html标记?

或许最好的做法是别的什么?

1 个答案:

答案 0 :(得分:2)

这取决于您的要求。一般来说,正如您所说,有两种方法:

通过Ajax加载格式化的HTML,或者加载JSON然后自己创建HTML。每个都有其优点和缺点:

正在加载HTML

优点:

  • 您可以在服务器端进行生成,从而保持客户端代码清洁

缺点

  • 通过电线发送的数据包大小会更大
  • 该请求仅针对该方法非常具体,并且很难重用

正在加载JSON

优点:

  • 有效负载小到可以
  • 由于您没有将其绑定到一个实现,因此您可以将JSON重用于其他目的(例如移动客户端)

缺点:

  • 必须在客户端完成HTML的生成。如果你手动或使用jQuery这样做,这可能很麻烦,并且往往会增加客户端脚本。 (解决方案是使用模板引擎,如moustache.js或handlebars.js)
  • 您的渲染逻辑位于服务器上和客户端上,这意味着并非一切都在一个地方

正如你所看到的,两者都有利有弊。这里没有真正的硬规则,这取决于你的情况。

一般来说,我的建议是,如果你想要快速的东西,你不认为你需要在其他地方使用动态HTML加载相同的方法。如果您认为您可能希望在其他页面或其他客户端上重用数据,请将JSON与模板引擎一起使用。