返回包含javascript的部分视图是不好的做法?

时间:2009-05-14 13:50:47

标签: javascript jquery asp.net-mvc architecture

我正在实施一个客户数据库,它允许我使用ASP.NET MVC和javascript(jQuery)搜索用户和公司,浏览和编辑他们的详细信息以及许多其他内容。

每当发布帖子或get时,我都会通过jQuery.load执行此操作并将PartialView插入到DOM中。

部分视图包含表单。我希望那些也是ajax表单,所以这些partialviews具有document.ready处理程序,将表单转换为ajax表单(通过jquery.form)。

一开始我在回调/代码中处理这个问题,将部分视图插入到DOM中。但是,这导致了一个包含大量javascript函数的大脚本,这些函数引用了不同的页面。我通过将脚本插入相应的页面来重构大javascript。

现在代码更加流畅(我的OnXXXPartialView处理程序更少),代码整齐地位于它所属的局部视图中。大多数这些文件只包含3-4行javascript代码,因此开销并不是很重要。

如此有效我不仅仅是在文档DOM中添加元素,有时候我还添加了一段javascript。在实践中,这很好,但似乎Firebug can't debug the dynamically loaded scripts

Firebug问题有一些可行的解决方法,但我想知道我的架构是否真的是罪魁祸首。你把javascript属于部分视图?有没有最好的做法?

2 个答案:

答案 0 :(得分:7)

如果您在部分视图中经历了包含javascript的麻烦,我会切换到只在您的ajax调用中返回JSON,这样您就可以在客户端上处理它。虽然,我承认我总是喜欢这种方法。

至于最佳实践,我一直认为在ajax调用而不是json中返回生成的html是不好的,但那只是我(不是敲你,这是个人选择)。显然,微软并不认为这是不好的做法,因为他们专门建立了支持它的功能。无论如何,我不会考虑在你的html中包含javascript,而不仅仅是首先发送html。

我很好奇,javascript中有什么?

编辑: 具体来说,我赞成做一个ajax调用来获取json,然后使用客户端JS来构建“局部视图”并将其插入到dom中。而不是进行ajax调用以获取服务器为客户端呈现的html然后插入到dom中。

  

部分视图包含表单。我希望那些也是ajax表单,所以这些partialviews有document.ready处理程序,将表单转换为ajax表单(通过jquery.form)。

我认为您可以在将部分视图插入dom的回调/代码中处理此问题。

编辑:如果它有序,高效,组织良好并且适合你,那么我会坚持下去。将所有内容整合到一个局部视图中的想法绝对具有吸引力,因此我不会过于担心违反任何最佳实践。我唯一担心的是JS可能是可重用的,如果你一遍又一遍地插入相同的脚本就是这种情况。但在这种情况下,听起来你有很多分区,所以我坚持使用它,除非你可以概括你的脚本并将它们包含在你的其他JS中。

答案 1 :(得分:3)

最后 - JavaScript应该在一个文件中(因为每个http GET花费一些宝贵的时间)并且缩小。这些链接可能会让您感兴趣:herehere

你处理JS的方式会产生一些不需要的数据传输 - 而不是发送JS,使其静态,在客户端缓存它并进行参数化。

上面的帖子提供了一个很好的提示(JSON)如何参数化你的JS:)