使用 Play 设计 Web 应用程序(提供优雅降级)的好方法是什么?我正在开发一个客户端应用程序,它使用 Ajax 来获取一些部分 View ,然后使用 JQuery 将它们放入 DOM 中。
为了支持 SEO 和优雅降级,我应该创建一个重复的 Controller 方法,它将部分 View 呈现为整个页面的一部分(包括页眉和页脚)。因此,当我使用 Jquery 进行调用时,它会调用“item/12345/partial”,它只会带来部分 View ,但是当用户转到“item/12345”时,它应该显示整个页面,其中部分已经卡住了。
第二个选项是避免第二个 Controller 方法,并始终返回完整页面内容(页眉、javascript、样式、部分和页脚)。当使用 JQuery 调用时,回调方法将仅删除必要的 HTML 并将其放入 DOM 中。当然,这意味着服务器将始终返回相同数量的内容,因此它确实降低了使用 AJAX 的优势。
您会推荐哪一个?
最佳答案
第二个选项对我来说看起来不太好。我们在项目中使用的是由 ajax 部分扩展的基本模板,这些部分具有类似这样的内容,不会在 ajax 请求上加载模板的其余部分:
#{ifnot request.ajax}
#{extends 'search-main.html' /}
#{/ifnot}
和 search-main.html
在要呈现整页(非 ajax 请求)时应出现 ajax 部分的位置有 #{doLayout/}
。 request.ajax
中的值将由 Play 设置,因此您不必自己计算。
关于重复的 Controller :如果需要,您应该能够将一个 Controller 映射到多个网址。只需将它们添加到routes
文件中即可。但这在我们的方法中不是必需的。
关于jquery - 设计一个使用 Ajax 的 Play 框架,但也关心 SEO 和优雅降级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15836696/