【问题标题】:adding js files to Rails3将 js 文件添加到 Rails3
【发布时间】:2013-04-26 23:02:22
【问题描述】:

即使经过Rails Asset Pipeline tutorial,我还是有点困惑。我正在尝试添加最新的 jquery 文件。我是通过布局 javascript_include_tag 还是通过 application.js 执行此操作?

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

<%= 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 版本。

【问题讨论】:

    标签: jquery ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    jquery-rails 包含特定版本的 jquery(哪个版本将取决于 gem 的版本),这就是您使用 //= require jquery 时包含的内容。如果你这样做,你应该包含带有javascript_include_tag 的jquery。

    如果您想使用与 jquery-rails gem 中包含的版本不同的版本,请将其设置在 javascript_include_tag 中,并忽略 //= require jquery 指令。

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

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

    【讨论】:

      【解决方案2】:

      application.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并保存在公共目录下,以免在请求这些文件时访问Rails后端。

      javascript_include_tag

      javascript_include_tag 'application', 'my_second_file'
      

      你得到:

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

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

      放置位置

      在生产环境中您不会进行调试,对吗?最好将它们放在application.js 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-26
        • 2020-12-17
        • 2021-03-19
        • 2019-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多