5

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

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

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

//= 

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

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

4

1 回答 1

10

这是什么 JavaScript 语法。

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

它如何处理它?

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

红宝石require与链轮require

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

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

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

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

干杯!

于 2012-11-04T11:35:09.710 回答