【问题标题】:Standard way to include Javascript files in app?在应用程序中包含 Javascript 文件的标准方法?
【发布时间】:2014-11-03 18:46:44
【问题描述】:

假设我从网上某处提取了一个 fancy.js 文件,我应该采取哪些步骤将其包含在我的 Rails 4 应用程序中?

现在我有以下内容

  1. 将 fancy.js 移至 assets/javascripts 文件夹
  2. 添加 //= 对 application.js 资产管道的要求
  3. ???

在 1 和 2 之后还有更多步骤,还是我一开始就做错了?

【问题讨论】:

    标签: javascript ruby-on-rails-4 asset-pipeline


    【解决方案1】:

    看起来您走在正确的道路上。看看里面app/assets/javascripts/application.js

    当你创建一个新的应用程序(即rails new app_name)时,它应该已经添加了

    //= require_tree .
    

    只需添加对您希望包含的其他 javascript 文件的引用。

    示例

    //= require jquery
    //= require jquery-ui
    //= require jquery_ujs
    //= require fancy
    //= require_tree .
    

    您可以在Adding Javascript File to Rails找到更多信息

    【讨论】:

    • 感谢您的回复。是否有任何我应该注意的特殊语法约定?如果文件名是 fancy.min.js 而不是 fancy.js 怎么办?语法是否简单需要 fancy.min ?
    • 你必须像这样添加文件://= require fancy.min.js
    • 我明白了,谢谢!我问的原因是因为我打算在我的 rails 应用程序中使用 jquery.backstretch.min.js 文件,所以我必须将 //= require jquery.backstretch.min.js 添加到我的 application.js 对吗?
    • 谢谢!如果我只想在会话/new.html.erb 中使用 jquery.backstretch.min.js,您是否知道除了声明 js 语法之外,我是否需要执行任何其他步骤?
    • 只需将此添加到您的页面:<%= javascript_include_tag "my_javascipt_file" %>
    【解决方案2】:

    使用流行的第三方资产时,更好的选择是查看 Rubygems 以获取资产的 gemified 版本。在这种情况下fancybox2-rails

    gem 'fancybox2-rails', '~> 0.2.8'
    

    使用链轮将 gem 添加到您的 application.js

    //= require jquery
    //= require fancybox
    

    或者在脚本标签中:

    <%= javascript_include_tag "fancybox" %>
    

    还有css:

    /*
     *= require_self
     *= require fancybox
     *= require_tree .
     */
    

    使用 Gemified 包的优势在于它更易于维护,并且可以避免第三方代码污染您的代码库。缺点是 gem 可能比它封装的实际软件版本要旧几个版本。

    如果您需要添加供应商文件,您可能应该将它们添加到 lib/assets 而不是 app/assets,因为它明确区分了实际驱动您的独特应用程序的代码和依赖项。

    要记住的另一件事是,资产通常是在生产环境中的部署时编译的(在 Heroku 上尤其如此),而不是按请求编译(这会很慢)。所以你不能在你的 sprockets 指令中使用条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2013-11-28
      • 2017-11-07
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2010-09-28
      相关资源
      最近更新 更多