【问题标题】:Why do the Rails helper methods prevent "unobtrusive JavaScript"?为什么 Rails 辅助方法会阻止“不显眼的 JavaScript”?
【发布时间】:2009-10-25 04:11:45
【问题描述】:

我听说 Ryan Bates 说 Rails JavaScript 辅助方法可以防止“不显眼的 JavaScript”。

这是否正确,如果正确,有人可以解释原因吗?

【问题讨论】:

    标签: javascript ruby-on-rails unobtrusive-javascript


    【解决方案1】:

    Unobtrusive 只是意味着“不要将您的 HTML 与您的 javascript 行为混为一谈”。另一种说法是“不要仅仅因为你想使用 javascript 而改变你的 HTML”。 rails javascript helper 方法以一种隐藏的方式做到了这一点。

    假设您根本没有使用 javascript。如果您想要一个 HTML 表单,您可以使用 form_for 并拥有一个常规表单。现在假设您要添加 javascript,以便您的表单提交 AJAX 请求而不是常规 HttpRequest。你有两种方法可以做到这一点。

    1. 可以使用辅助方法remote_form_for
    2. 您可以使用 jQuery 之类的东西将函数绑定到通过 AJAX 提交表单的提交调用。

    第一种方法是突兀的。您正在更改您的标记(查看生成的代码)。第二种方法不显眼。通过使用 jQuery 并附加来自 javascript 的行为,您根本不会改变您的 HTML。

    【讨论】:

    • @Lee Tang:总是乐于提供帮助:)
    【解决方案2】:

    rails 助手将 onclick 事件添加到 html 中。我一直认为不引人注目意味着当用户禁用 javascript 时您的页面仍然可以工作,但是在我打字时弹出 jason punyon 的答案后,我检查了它。

    确实,将 javascript 与 html 完全分离的技术已被标记为 unobtrusive javascript。

    【讨论】:

    • 你提到的第一个概念叫做“优雅地降级”
    • 此外,使用不显眼的 Javascript 通常被认为是优雅降级的最佳方式。那些在没有 javascript 的情况下查看页面的人不会出错,但他们不会获得开发人员或设计人员所期望的“完整”体验。这就是为什么即使没有打开 Javascript 也让您的页面正常运行很重要的原因。
    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2012-12-30
    • 2016-07-22
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多