
我很高兴地宣布,我关于 “自由讨论” 会话的提议,主题为 “Rails 上的 jQuery” 已在 RailsConf 上被接受!
如果您参加了 RailsConf,请在周四晚上 9:30 准时到 c125 室,加入讨论。我将谈论我在 Rails 上的 jQuery 上进行的持续工作,如果有人感兴趣,我应该有一些代码可以演示。
如果您有兴趣了解其他人如何解决有关 jQuery 与 Rails 集成的难题,或者只是想分享您所做的有趣事情,请随时加入我们。我们在那儿见!
更多详细信息
Yehuda 刚刚在 Rails 上的 jQuery 工作原理 上发布了更多详细信息。
自从我上次公开讨论 Rails 上的 jQuery 以来,我已经尝试了很多途径,编写了很多代码,并得出了某些结论。
- jQuery 和非侵入式 JavaScript 与尝试在标记中描述行为的方式从根本上是不兼容的,就像 Rails 通过 “JavaScript 助手” 所做的那样。
- 修复此问题的尝试,特别是 Rails 的 UJS,仍然要求您将 JS 行为包含在您的视图中,然后这些行为会在运行时被整理到 JavaScript 文件中(并根据需要进行缓存)。如果您想在多个页面中包含相同的 JS 行为,您需要创建自定义助手并调用它们。
- jQuery 已经是非侵入式 JavaScript 的完美机制,它直接内置到库中。
- jQuery 开发人员面临的最大问题不是简单性(这在库中是免费的),而是难以在需要它们的 Rails 视图中包含正确的 jQuery “模块”。
在中等或更复杂应用程序中使用 jQuery 与 Rails 时,最常见的问题是,在将所有内容都包含在单个 application.js 文件中(这会导致大型应用程序中的严重速度下降)与拥有多个模块化文件(将它们正确包含很麻烦)之间进行权衡。
对于那些想要比习惯了 Prototype 助手并希望能够将 jQuery 库作为直接替换使用的 Rails 用户更频繁地使用 Rails 的 jQuery 用户来说,这是一个问题。在 Rails 上的 jQuery 的第一个版本中,我将针对那些想要使用 Rails 的 jQuery 开发人员。换句话说,如果您了解 jQuery 或愿意使用 jQuery,那么 Rails 上的 jQuery 适合您。
如果您不想学习 jQuery,并且想纯粹用 Ruby 进行编程,那么这个版本的 jQuery 不适合您。将来会发布一个版本,其中将包含一些面向纯 Ruby 开发人员的功能,但我仍然坚持认为非侵入式 JavaScript 从根本上与这种思维模式不兼容。
综上所述,Rails 上的 jQuery 到底做了什么?
首先,它是一个 Rails 插件,您可以在 application.rhtml 中添加 <%= include_jquery %> 来激活它。当您的服务器启动时,它将解析所有 JavaScript 文件,并识别这些文件中的选择器。当在您的布局中调用 include_jquery 时,它将获取渲染的 HTML,并使用 Hpricot(与 jQuery 共享语法)来确定服务器启动时识别的任何选择器实例是否存在。
包含也存在于 HTML 中的选择器的 JavaScript 文件将被加载并按预期运行。
简而言之
- 创建您的 JavaScript 文件,像往常一样使用选择器
- 在您的布局中使用 include_jquery
- 您已经完成了