1

即使在完成Rails Asset Pipeline 教程之后,我也有点困惑。我正在尝试添加最新的 jquery 文件。我是通过布局 javascript_include_tag 还是通过 application.js 做到这一点?

如果是这样,有什么区别?如果我//= require jquery在 application.js 中使用,我将如何指定实际的内部版本号

<%= javascript_include_tag "http://ajax.googleapis.com/ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js",
 "jquery.rails.js", 
 "application.js" 
 %>

上面的方法是用上面的行添加两次jquery,然后通过application.js

//= require jquery 

应用程序是否需要从已安装的 gem 中获取 js 文件。在我的 Gemfile 我有这条线

gem 'jquery-rails'

所以我的主要问题是我应该从哪里加载我的特定 jquery 版本。

4

2 回答 2

2

jquery-rails包含特定版本的 jquery(哪个版本将取决于 gem 的版本),这就是您使用//= require jquery. 如果这样做,则不应将jquery 包含在javascript_include_tag.

jquery-rails如果您想使用与gem 中包含的版本不同的版本,请将其设置javascript_include_tag为您拥有的版本并省略//= require jquery说明。

为了进一步解释,//= require资产管道使用该语法在加载时加载(并且在预编译时也合并到)特定文件application.js。这样做的主要好处之一是单个资源文件的缓存和交付速度更快。分别包含多个脚本javascript_include_tag是加载脚本的另一种方式,但由于它<script>为每个文件添加了单独的标签,因此无法获得//= require语法提供的好处。

然而,对于 CDN 服务的脚本,失去的好处大部分都得到了弥补。这是因为它们很可能已经被客户端缓存,服务非常迅速,并且保证将来不会被修改。

于 2012-12-04T16:45:35.200 回答
0

应用程序.js

文件在生产中的一个文件中提供(压缩和编译),这意味着:

//= require my_file

你得到:

<script ... src="/assets/application.js" ...>

在 application.js 中包含 my_file 并压缩。这是默认的生产配置:

config.assets.compress = true # just to compress
config.assets.compile = false # false to use precompiled assets, you precompile with rake assets:precompile
                              # true to allow compilation in production

注意:预编译是将 scss 和 coffee 文件转换为 css 和 javascript 并将它们保存在 public 目录下,以便在请求这些文件时不访问 Rails 后端。

javascript_include_tag

javascript_include_tag 'application', 'my_second_file'

你得到:

<script ... src="/assets/application.js" ... >
<script ... src="/assets/my_second_file.js" ... >

如果您离开,您将my_first_file嵌入到 application.js 中//= require my_first_file

放在哪里

在生产中你不会调试,对吗?,把它们放在application.js.

于 2013-04-26T15:02:22.987 回答