jquery - 设计一个使用 Ajax 的 Play 框架,但也关心 SEO 和优雅降级

标签 jquery ajax playframework playframework-1.x graceful-degradation

使用 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/

相关文章:

javascript - Jquery 可拖放事件委托(delegate) : stop & drop

javascript - 从另一个函数中淡出一个函数

Jquery 自动完成对齐

javascript - 无法远程连接到 dlib 网络服务器,localhost 可以正常工作

ajax - Wicket 和复杂的 Ajax 场景

java - 使用 Play Framework 1.2.5 访问 Web 服务

javascript - 使用 jquery ajax $.load 防止自动 "scrolling up"

Javascript HTML 输入 AJAX 更新

java - 玩java框架在应用程序启动时初始化变量

playframework - Play Framework 模块 vs 子项目