Rails 3 UJS Ajax 模式/策略,哪一个更好?
我工作的公司最近从Rails 2升级到Rails 3,同一时期我们也从rjs迁移到jquery。我们正在采用一种新模式,旨在提高视图的可重用性。我将使用编辑/更新作为示例来说明在项目中执行 AJAX 的新方法和旧方法:
A. 旧方法 - 编辑操作模板不会向客户端呈现任何更新特定的 javascript 逻辑。更新模板呈现 html 内容和操作(替换元素)。这与 RJS 方法非常相似,但是是在 jQuery 中。
优点:
1. AJAX html内容和执行DOM操作的javascript代码组织在同一个.rb文件中,易于维护。
2. 查看规范可以测试更新 AJAX 响应中是否呈现正确的 DOM 操作 js 代码。
缺点:
1. 由于 html 内容和 js 代码是耦合的,并且在目标页面上假设一定的 DOM 结构,因此很难在不同的页面上重用。
B. 新方式 - AJAX 请求的更新操作模板仅返回 JSON 文档,其中包含转义的 html 内容。操作 DOM 的 js 代码是从编辑操作模板渲染的,并监听 AJAX:success/error 虚拟事件。所以内容和行为是分开的。
优点:
- AJAX html 内容和 javascript(行为)是解耦的,因此可以在不同页面上稍微不同地调整和操作内容。
缺点:
html 内容和 js 代码现在组织在 2 个不同的文件中(js 在编辑操作模板中,html 内容在更新操作模板中),比以前更难维护。
我们无法再轻松地测试视图行为 - 更新模板现在仅呈现 AJAX html 内容,但操作它的代码位于不同的视图中(编辑)。
由于响应是 JSON 格式,我们不能再使用 format 来判断客户端是期望使用 JSON 封装的 html 还是只是 JSON API 调用。
这些是我到目前为止学到的东西,我想知道在这个主题上有更多经验的人是否可以对此有所了解 - 哪种方法总体上更好以及如何改进它们。
谢谢!
-小天
The company I work for has recently upgraded from Rails 2 to Rails 3, during the same period we also migrated from rjs to jquery. We are adopting a new pattern which is intended to improve view reusability. I will use edit/update as example to illustrate the new way and the old way of doing AJAX in the project:
A. Old way - Edit action template does not render any update specific javascript logic to client. Update template renders both html content and action (replace a element). this is very similar to RJS approach but in jQuery.
Pros:
1. AJAX html content and javascript code that does the DOM manipulation are organized in same .rb file, easy to maintain.
2. View specs can test if proper DOM manipulation js code were rendered in update AJAX response.
Cons:
1. Because html content and js code are coupled and assume certain DOM structure on target page, it's harder to reuse on a different page.
B. New way - the update action template for AJAX request only returns a JSON document, which contains escaped html content. the js code that manipulates DOM is rendered from edit action template and listening on AJAX:success/error virtual event. So the content and behavior are separated.
Pros:
- AJAX html content and javascript(behavior) are decoupled, so the content can be tweaked and manipulated slightly different on different page.
Cons:
The html content and js code are now organized in 2 different files (js in edit action template, html content in update action template), it's harder to maintain than before.
We can no longer easily test view behavior - the update template now only render AJAX html content, but the code that manipulates it is in a different view (edit).
Since the response is in JSON format, we can no longer use format to tell if the client is expecting html wrapped in JSON or just JSON API call.
These are things I have learnt so far, I am wondering if someone with more experience on this topic could shed some light on this - which approach is better in general and how to improve them.
Thanks!
-Xiaotian
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
jQuery 的 ajax & rabl 生成json
jQuery's ajax & rabl to generate json