富客户端 vs 薄客户端
我有一个设计上的决定需要做。
在我的网页(ajax)应用中,我们需要决定用户界面的逻辑应该放在哪里?
是完全通过JavaScript来加载(就是纯粹的单页应用),只有数据在进出。
还是
让服务器发送一些格式(比如XML),然后通过JavaScript来动态创建丰富的用户界面(半ajax)。这样数据和界面都有进出。
哪种选择更好呢?(考虑速度、开发的简便性和平台的独立性)
谢谢。
4 个回答
最主要的影响因素是你是否在意页面加载的速度。如果你不介意在页面加载时就看到所有的界面元素,那么你的应用可以通过只传输数据而不是整个界面来变得更灵活。如果你希望加载更快,并且不介意发送比较大的AJAX请求,那么发送一些界面的代码也是可以的。如果你的服务器有足够的能力,可以提前生成带有数据的界面,并把这些准备好的数据发送给用户,那么用户的浏览器会运行得更快,页面的初始加载速度也会更快。
你选择哪种方式应该根据具体的任务来决定。并不是所有的请求都需要用同样的方式来处理。
我觉得这主要还是看你的应用是什么类型。如果它更像一个桌面应用程序,那么使用单页应用可能会比较合适。使用Ajax客户端在很大程度上有和使用框架一样的缺点,但在桌面风格的应用中,这并不是个大问题。
如果你的第二种选择更像是一个传统的网站,有很多不同的页面和内容,那么你就需要为这些不同的内容设置独立的链接。但如果你想做一个Ajax应用,可能一开始并不会带来太多好处。页面上使用一些Ajax功能可能会有用,但如果全部数据都通过Ajax加载,可能反而会让你的应用变得更慢,而没有其他好处。
几个月前,我也遇到了类似的问题。正如上面提到的Lennart所说,如果你的应用程序更像桌面应用,那么选择pyjamas或类似的库是有道理的。pyjamas的一个最大优点是能够很好地将后端和前端代码分开。我觉得这非常重要。
如果你的应用程序不像桌面应用(就像我们的应用),那么多页面的设计会有更多的好处,比如单个改动不会导致整个应用崩溃,更容易维护等等。你可以考虑让你的应用服务器提供json数据,而其他的web服务器提供静态内容和js文件。这样,js就可以向应用服务器请求数据。通过这种方式,我们成功地将前端和后端分开了。此外,我们选择了mootools作为js库,而不是pyjamas。当然,这完全取决于你的个人喜好和应用需求。我们确实使用了python模板来处理服务器端的模板,但这是在编译时而不是运行时,这与通常的方法不同。这需要我们稍微调整一下思维,但带来了很多好处。
我最后分享了我的故事,但我觉得这很相关,希望能对你有所帮助。