Ruby on Rails - 如何在 application.js 中执行 require

Posted

技术标签:

【中文标题】Ruby on Rails - 如何在 application.js 中执行 require【英文标题】:Ruby on Rails - how require is executed in application.js 【发布时间】:2012-10-24 10:57:18 【问题描述】:

我正在阅读一本关于“Ruby on Rails”的书。在“application.js”中,我们以以下方式和更具体的方式包含其他 javascript 库 - jQuery UI:

//= require jquery
//= require jquery_ujs
//= require jquery-ui

因为这是普通的 JavaScript 文件(这里不是 ruby​​ 扩展,例如“html.erb”),应用程序如何知道执行 require 命令?这是什么 JavaScript 语法:

//= 

既然这是普通的 JavaScript 文件,为什么我们不使用“脚本”标签来包含 JavaScript 文件?

另外,我已阅读 here ,“require”方法将检查 $LOAD_PATH 变量文件夹中定义的这个库。如何查看“jquery-ui”的存储位置?我之所以问,是因为在其他应用程序中,为了使用 jQuery UI,我不仅应该添加 JavaScript 文件,还应该添加库使用的 css 文件和图像——在这种情况下,我们只使用单行来执行此操作?

【问题讨论】:

【参考方案1】:

这是什么 JavaScript 语法。

任何以// 开头的都是Javascript 注释。

它是如何处理的?

服务器端的 Sprockets 扫描 JS 文件以查找 directives//= 是一个特殊的 Sprocket 指令。当它遇到该指令时,它要求Directive Processor 处理命令,在本例中为require。在没有 Sprockets 的情况下,//= require .. 行将是一个简单的 JS 注释。

Ruby require vs Sprockets require

这是两个完全不同的东西。您链接到的是 Ruby 的 require。

为什么不使用脚本标签来加载 JS 文件。

通常,您希望连接所有应用程序 JS 文件,然后将它们缩小为 1 个主 JS 文件,然后将其包含在内。我建议您阅读有关这方面的 YSlow 最佳实践。

我还建议观看 Asset Pipline 上的 Railscast - http://railscasts.com/episodes/279-understanding-the-asset-pipeline

干杯!

【讨论】:

以上是关于Ruby on Rails - 如何在 application.js 中执行 require的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ruby​​ on rails 4 中创建高级搜索

如何在 ruby​​ on rails 中结合救援多个异常?

如何在 ruby​​ on rails 中命名外键?

Ruby on Rails - 如何在 Rails 方法中使用 HTML 坐标?

如何在 Ruby on Rails 中分析请求?

如何解决 ruby​​ on rails 版本差异(向后/向前兼容性)