在我曾经工作的大多数桌面Web应用程序中,您需要一个服务器端Web框架。服务器端Web框架(Struts,Spring MVC等)具有某种用于处理请求的控制器,然后是用于生成动态内容的模板引擎(Velocity,JSP等)。
现在我开始研究移动Web应用程序,我看到的所有讨论都围绕着选择UI框架(jQuery Mobile,jQTouch,Sencha Touch等),但我没有看到任何关于服务器端发生的事情的讨论实际处理HTTP请求或生成HTML,CSS和JavaScript。
这是否意味着大多数移动Web应用程序不使用服务器端Web框架...意味着服务器提供静态内容,大多数交互行为都是用JavaScript编码的,唯一的服务器端代码是REST服务JavaScript客户端加载?
如果我想使用服务器端Web框架那会是个坏主意吗?我会遇到什么问题?有没有人对Web框架提出建议,这将是一个高效的平台,而不是像jQuery mobile这样的移动UI框架“妨碍”?
注意:我使用的开发人员大多来自企业Java背景,但是,我不会将其限制为仅基于Java的web framoworks。还有其他框架可以考虑Java(Grails,Lift等)。
一个很好的问题肯定,我会这样回答。目前的趋势是在前端建立大量的互动性。有几个原因。有些人这样做是因为这是新事物,其他人这样做是因为他们试图复制桌面体验。最后,任何给定的Web项目只有一个目标,那就是创建最佳和最可持续的用户体验。
话虽如此, 会有服务器端技术要避免 这将是任何为您生成前端但不使用jQuery的。今天超过45%的网站使用jQuery,如果你选择其他东西,你将立即与流行的移动框架发生冲突。 (GWT,IceFaces,我在看着你)。
可能最安全,最灵活的方法是使用基于Spring的实现或 Prime Faces。 Spring Mobile值得关注。 Prime Faces实际上实现了jQuery Mobile,并且可以使用Theme Roller进行主题化。
一般来说,只要你推动好的标记,你使用什么后端框架(如果有的话)并不重要。浏览器并不关心,用户唯一关心的是良好的体验。所以,只要它不妨碍你选择任何会让你的开发者为后端感到满意的东西。
至于前端框架,是的,它们的受欢迎程度正在提高,因为它们确实倾向于标准化移动中的一些最佳实践。 jQuery Mobile vs Sencha vs jQTouch有很多比较。我将告诉你哪个最适合你的项目,但肯定会使用jQuery Mobile或Sencha,因为围绕这些的社区支持是巨大的,你不太可能看起来像许多破旧的本土移动网站那样当他们没有经验将其拉下来时,他们试图从头开始。这太可悲了。我的个人推荐是jQuery Mobile,因为它涵盖了如此广泛的设备,并且(如果您坚持使用标准的逐页模型)即使是最疯狂的功能手机也会优雅地降级,并且仍然可以正常运行,但在智能手机上看起来很棒。
关于使用RESTful设计和JavaScript加载所有内容并管理状态的问题。有许多人正在这样做,这肯定是一个快乐的经历,但你会立即限制谁可以使用它的移动浏览器支持良好的JavaScript的人。您将只关注支持iOS,Android 2.2 +,BlackBerry 6+和Windows Phone 7+。所有其他人可能在查看您的网站时遇到很大困难。在转向这样的实现之前,请仔细考虑您的受众。如果您的网站在没有JavaScript的情况下无法工作,而您的主要客户都在企业界...当最新的黑帽会议暴露公司电话的弱点和保守风险缓解(偏执)时会发生什么,他们会推出一项安全政策每个人都禁用JavaScript的手机。这种事情一直都在发生。所以,考虑一下你的观众。
看看 的ItsNat,ItsNat邀请您在客户端JavaScript中思考,但在Java中编码并在服务器中执行,为客户端生成相同的JS代码。
与GWT的区别在于,Java W3C DOM代码在服务器中执行,JS自动生成,同时GWT在客户端执行,服务器数据必须传输到客户端。