2011-12-25 47 views
4

所以我正在Django中开发这个Web应用程序。确切的web框架并不重要,但重点是:我们在代码,数据和实际的HTML之间有很好的分离。然而,我们越走越多,我们发现我们希望保留在单个网页上,并使界面通过AJAX请求响应用户操作。现在我发现自己编写了所有这些处理函数,它们期望来自AJAX请求的特定输入,并通过基本上串联字符串和数据来构造页面的大部分。突然它又是1999年,我手动创建HTML字符串。这不是吗?构建基于AJAX输入的HTML的正确方法

所以我的问题是,什么是体面模式/框架/ ...创建在浏览器端以系统的方式HTML吗?我知道有一些jQuery的模板插件,但我承诺其中的一个,但我不知道是否没有一个更基本的方法来解决这个问题,而这些问题不是那么罕见?

+2

我强烈建议探索某种类型的客户端模板。 (例如[Handlebars](http://www.handlebarsjs.com/)) – 2011-12-25 22:24:06

+0

通常,让您的应用程序完全依赖于JavaScript是一个糟糕的设计。您应该让页面停用JavaScript,即使只有2-3%的用户会禁用它。这将使您的页面可以在更多的平台上工作,并且可以使其在机器上运行得更快。它也很难在客户端代码中发现,报告和重复发生错误。您仍然可以在这样的场景中使用AJAX来增强页面,添加幻想效果,摆脱页面加载等使客户端体验变得笨重的事情等。 – 2011-12-25 22:36:16

回答

1

什么我以前做的是让我的服务器上做加工和代码生成。保持客户端的负载。

您可以加载谐音(视图)并返回它们,JSON编码或以其他方式。如果您使用json,请将HTML设置为响应对象中的“内容”或类似内容。

这样,有没有重复代码,因为你可以使用相同的看法。诀窍就是如何分解它们。

+0

谢谢,这是个不错的主意。出于某种原因,我以前从未想过这件事。具有可以在服务器端保留逻辑和模板的优点。当然这是以增加要传输的ajax数据的大小为代价的。不知道是否应用压缩是合理的,或者无论如何在更深层次上采取了这种措施......现在只是为了保持想法未来而没有答案... – Nicolas78 2011-12-25 21:30:18

+0

严重的是,视图有多大?几kb?我不会担心=) – 2011-12-25 21:37:16

+0

嘿嘿,这是我的思维类型通常,但你陷入了'基本解决问题的模式';) – Nicolas78 2011-12-25 21:39:16

1

不建立HTML字符串,你认为持有其持有他们的关系数据库中的数据,然后就骑自行车周围的人/基于用户交互AJAX创建这些JavaScript类的内部的JavaScript DOM对象的数组?这就是我如何在一个页面上使用动态预加载(允许用户在选择它时立即获得全尺寸图像)来维护近500张照片(分成多组)的照片库。

1

过这个1999年的感觉也来和定居jQuery tmpl。 它可以让你保持模型和视图分离,并有更多时间专注于业务逻辑。您可以通过在文档主体中的任何位置使用text/x-jquery-tmpl类型的脚本标签来定义模板,并通过使用其id来对其进行使用。