使用Play设计web应用程序的好方法是什么?我正在开发一个客户端应用程序,它使用Ajax获取一些局部视图,然后使用JQuery将它们放入DOM中。
为了支持SEO和优雅的降级,我应该创建一个复制的控制器方法,它将部分视图呈现为整个页面的一部分(包括页眉和页脚)。所以当我用Jquery调用时,它会调用"item/12345/partial",它只会带来部分视图,但是当用户转到"item/12345"时,它应该显示整个页面,部分已经卡住了。
第二个选项是避免第二个控制器方法,总是返回完整的页面内容(header、javascripts、styles、partial和footer)。当用JQuery调用时,回调方法只会剥离必要的HTML并将其放入DOM中。当然,这意味着始终会从服务器返回相同数量的内容,因此从一开始就降低了使用AJAX的优势。
你推荐哪一个?
第二个选项看起来不太适合我。我们在项目中使用的是由ajax部分扩展的基本模板这些部分是这样的不会在ajax请求时加载模板的其余部分:
#{ifnot request.ajax}
#{extends 'search-main.html' /}
#{/ifnot}
和search-main.html
有#{doLayout /}
在ajax部分应该发生的地方,如果要呈现整个页面(非ajax请求)。request.ajax
中的值将由Play设置,因此您不必自己计算。
关于复制控制器:如果需要,你应该能够将一个控制器映射到多个url。只需将它们添加到routes
文件中。但是在我们的方法中不需要。