我正在读一本关于“Ruby on Rails”的书。在“application.js”中,我们以下列方式包含其他JavaScript库,更具体 - jQuery UI:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
因为这是普通的JavaScript文件(不是ruby扩展,例如“html.erb”,例如exmaple)应用程序如何知道执行require命令?这是什么样的JavaScript语法:
//=
因为这是普通的JavaScript文件,为什么我们不使用“脚本”标签来包含JavaScript文件?
另外,我已阅读here,“require”方法将在$ LOAD_PATH变量文件夹的define中检查此库。我怎样才能看到“jquery-ui”的存储位置?我问,因为在其他应用程序中为了使用jQuery UI,我不仅要添加JavaScript文件,还要添加库使用的css文件和图像 - 在这种情况下,我们只使用单行进行此操作?
答案 0 :(得分:10)
以//
开头的任何内容都是Javascript评论。
服务器端的Sprockets扫描JS文件directives
。 //=
是一个特殊的Sprocket指令。遇到该指令时,它会要求Directive Processor处理命令,require
在此示例中。在没有Sprockets的情况下,//= require ..
行将是一个简单的JS注释。
require
vs Sprockets require
这是两件完全不同的事情。你链接的是Ruby的要求。
通常,您希望连接所有应用程序JS文件,然后将它们缩小为1个主JS文件,然后包含它。我建议阅读YSlow最佳实践。
我还建议观看Asset Pipline上的Railscasts - http://railscasts.com/episodes/279-understanding-the-asset-pipeline
干杯!