Rails 3.1推荐用于管理库javascripts的实践

时间:2011-09-22 05:43:47

标签: javascript ruby-on-rails ruby-on-rails-3.1

我很好奇在Rails中组织和使用库javascripts(如Backbone,Underscore,Modernizr等)的推荐方法是什么。我注意到了许多不同的做法,所以看起来有点令人困惑。

有许多宝石提供捆绑诸如Modernizr,Backbone,Underscore等内容的能力。这是宝石存在的情况下的首选方法吗?

对于不存在gem的情况,使用/ public文件夹或/ app / assets / javascripts并通过管道进行是否有意义?

2 个答案:

答案 0 :(得分:3)

只是添加一些东西(@DevinM的答案很精彩),这是我在Rails中使用JavaScript的想法:

  • 如果有一个Gem捆绑了一个JavaScript库(比如jquery-rails),我会坚持这样做:
    • 使图书馆远离您的代码。
    • 自动将库添加到rails(或至少解释如何执行此操作)。
    • 如果您愿意,可以通过bundle update自动更新库。
  • 如果Gem没有集成,请将其保存在vendor/assets下,如下所述:
    • 确保库名为external。
    • 记录某个地方对该库的需求(例如在application.js文件中)
  • 您所知道的lib/assets库,如上所述。
  • application.js*.js文件夹中的控制器相关app/assets/javascripts文件。
  • 主要使用application.js进行连线,这意味着如何将其他库集成到您的应用程序中。解释代码的含义:使用库,文档参考,配置含义。

我的经验是,过了一段时间,你不记得图书馆的原因是什么,所以一些家务可以帮助你保持健康。

答案 1 :(得分:2)

我会看一下这个问题的Rails Guide

  

资产可以放在三个地点之一的应用程序中:   app / assets,lib / assets或vendor / assets。

     

app / assets适用于应用程序拥有的资产,例如   自定义图像,JavaScript文件或样式表。

     

lib / assets适用于您自己的库代码,但并不适用   进入应用程序的范围或共享的库   跨应用程序。

     

供应商/资产适用于外部实体拥有的资产   作为JavaScript插件的代码。

我要做的是将您不维护的所有JS文件放在供应商/资产中,如果缺少此文件夹,您可以创建它。至于为你的资产使用gems通常适用于更大的框架和jQuery这样的库,但是我会回避像Backbone.js这样的东西,只是为了保持gemfile清洁并减少你可能会看到的一些膨胀。

如果您需要任何澄清,请告诉我并祝您好运。