富Web客户端与瘦Web客户端

时间:2011-01-30 10:44:49

标签: python ajax web-applications user-interface pyjamas

我有一个设计决定。

在我的web(ajax)应用程序中,我们需要决定将用户界面逻辑放在哪里?

是否应该通过javascript(纯单页)完全加载。只有数据来来去去。

服务器是否应该发送一些通过javascript翻译的格式(XML)来动态创建丰富的用户界面。 (半阿贾克斯)。所以一些数据和ui来来往往。

哪个选项更好? (速度,易于开发,平台独立)

感谢。

4 个答案:

答案 0 :(得分:2)

IMO,这主要取决于它是什么类型的应用程序。它是否更像桌面应用程序?然后单页可能运行良好。在很大程度上拥有Ajax客户端具有same drawbacks as using frames,但这在桌面式应用程序中不是一个大问题。

如果您的第二个选项更像是一个传统网站,其中包含许多具有不同内容的不同页面,那么您的第二个选项会更好。然后您希望将不同的网址与不同的内容相对应。但是,制作一个Ajax应用程序可能不会在一开始就给你这么多。在页面上使用一些Ajax可能很有用,但使用Ajax加载所有数据可能不会向您的应用添加任何内容,除非使其变慢。

答案 1 :(得分:2)

几个月前我面临着类似的困境。正如Lennart(上图)所说,如果您的应用程序更具桌面性,那么选择睡衣或类似的库是有意义的。 睡衣提供的另一个最大优势是逻辑上分离的后端和前端代码。 IMO非常重要。

如果您的应用程序不像桌面应用程序(如我们的那样),那么多页面提供了更多优势,例如单一更改不会破坏整个应用程序,更易于维护等。您可能需要考虑可以让您的应用服务器服务json和其他Web服务器提供静态内容和js。 Js会请求json app服务器获取数据。通过这种方式,我们设法将前端和后端分开。此外,我们选择mootools作为穿着睡衣的js lib。当然,这取决于您的品味和应用需求。我们确实使用了python模板服务器端模板,但是在编译时不像通常的方法那样在运行时。这需要改变我们的想法,但提供了许多优点。

我最后告诉你我的故事,但我认为这是相关的,希望有所帮助。

答案 2 :(得分:1)

最大的影响是您是否担心初始页面加载时间。如果您不介意在页面加载时拥有所有UI,那么只需关闭数据而不是UI,您的应用就可以提高响应速度。如果您想要更快的加载并且不介意更大的AJAX请求,那么发送一些UI标记也不错。如果您具有使用数据预呈现UI的服务器功能并将完全准备好的标记数据发送给用户,则他们的浏览器将执行得更快,并且初始页面加载应该很快。

您选择的课程应该取决于手头的任务。并非所有请求都需要以相同的方式处理。

答案 3 :(得分:0)

  

哪个选项更好? (速度,易于开发,平台独立)

平台独立性,如果你的意思是跨浏览器兼容性,是使用睡衣的一个巨大原因,因为python代码包含一个理智的覆盖基础设施,可以为你处理一切。没有更多JS兼容性类。

无论如何,睡衣都是关于加载客户端应用程序,然后使用json-rpc仅用于数据。这是因为它更快(一旦应用程序加载),更容易分离服务器和客户端,更容易维护,因为所有UI代码都在一个位置的小部件中。

我见过像DokuWiki这样的东西使用php脚本来提供javascript,我的第一个想法是“为什么?”但我觉得它很好用。如果您大多数都有静态页面,偶尔会有一些JS用于装饰,这可能是有道理的。