我工作的公司最近从Rails 2升级到Rails 3,在同一时期我们也从rjs迁移到jquery。我们正在采用一种旨在提高视图可重用性的新模式。我将使用edit / update作为示例来说明在项目中执行AJAX的新方法和旧方法:
一个。 旧方式 - 编辑操作模板不会向客户端呈现任何更新特定的javascript逻辑。更新模板呈现html内容和操作(替换元素)。这与RJS方法非常相似,但在jQuery中。
优点:
1.执行DOM操作的AJAX html内容和javascript代码组织在同一个.rb文件中,易于维护
2.查看规范可以测试在更新AJAX响应中是否呈现了正确的DOM操作js代码。
缺点:
1.因为html内容和js代码在目标页面上耦合并假设某些DOM结构,所以在不同的页面上重用更难。
B中。 新方式 - AJAX请求的更新操作模板仅返回包含转义的html内容的JSON文档。操作DOM的js代码从编辑操作模板呈现并监听AJAX:成功/错误虚拟事件。所以内容和行为是分开的。
优点:
缺点:
html内容和js代码现在分为2个不同的文件(编辑操作模板中的js,更新操作模板中的html内容),它比以前更难维护。
我们再也无法轻松测试视图行为 - 更新模板现在只呈现AJAX html内容,但操作它的代码位于不同的视图中(编辑)。
由于响应是JSON格式,我们不能再使用格式来判断客户端是否期望用JSON包装的html或只是JSON API调用。
这些是我到目前为止学到的东西,我想知道在这个主题上有更多经验的人是否可以对此有所了解 - 哪种方法总体上更好,以及如何改进它们。
谢谢!
-Xiaotian