2011-09-22 55 views
2

我很好奇在Rails中组织和使用库javascripts(如Backbone,Underscore,Modernizr等东西)的推荐方法。我注意到一些不同的做法,所以它似乎有点混乱。Rails 3.1管理图书馆的推荐做法javascripts

有许多宝石可以提供捆绑像Modernizr,Backbone,Underscore等等的东西。这是宝石存在的情况下的首选方法吗?

对于不存在宝石的情况下,使用/ public文件夹或/ app/assets/javascripts并通过管道传递是有意义的吗?

回答

2

我会看看这个问题的Rails Guide

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

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

lib/assets是用于您自己的库的代码,它不适用于应用程序范围内的 或跨应用程序共享 的库。

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

我会做的是放置所有的JS文件,你不保留供应商/资产,如果这个文件夹丢失,你可以创建它。至于为你的资产使用gems通常适用于像jQuery这样的大型框架和库,但是我会回避像Backbone.js和其他类似的东西,只是为了保持gemfile清洁并减少你可能看到的一些膨胀。

如果您需要任何澄清,请让我知道您的应用程序并祝您好运。

+0

感谢那正是我想知道的。我也不喜欢使用宝石。 –

+0

没错,我看到了我创作者过度拥有宝石的项目的公平份额,IMO更好地使用了由图书馆创作者提供的版本。这适用于外部服务,就像Google Maps JS API一样。 –

3

我想补充的东西(@DevinM的答案是美好的),下面是我对Rails中使用JavaScript的想法:

  • 如果有捆绑了JavaScript库宝石(如jquery-rails)我想坚持:
    • 使图书馆远离您的代码。
    • 将库自动添加到rails(或至少解释了如何做到这一点)。
    • 帮助您通过bundle update自动更新库,如果你想。
  • 如果没有集成由宝石,如所描述保持vendor/assets下:
    • 确保该库被称为外部。
    • 文档需要该库的地方(例如在您application.js文件)
  • 你在lib/assets自己的库描述。
  • application.js或控制器依赖*.js文件在您的app/assets/javascripts文件夹中。
  • 使用application.js主要用于布线,这意味着如何将其他库集成到您的应用程序。在那里解释代码的含义:使用库,参考文档,配置的含义。

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