用于轨道的凉亭和宝石之间有什么不同?

时间:2015-07-09 14:55:37

标签: ruby-on-rails frontend bower

正如我们所知道的那样 bower 让所有事情变得更容易管理前端文件,例如j-query,bootstrap和许多其他文件,而无需手动从源代码下载。那么,轨道的宝石怎么样? ruby on rails可能需要前端和管理文件,比如bower。

我刚开始尝试在前端开发中使用bower和newbie,我对后端开发有一点了解,特别是在ROR中。我想知道凉亭是如何工作的,如果我们与ROR合作,它的优势是什么,我们目前正在使用ROR开发网络。我们通常使用gems安装bootstrap和许多其他前端框架,但我们想要移动并开始使用bower。

轨道的凉亭和宝石的不同之处在哪里?我应该使用bower来管理rails开发上的前端文件吗?

3 个答案:

答案 0 :(得分:4)

嗯,这个问题很基于意见,所以我也会写自己的。这里有两个主要的区别。首先,你提到的bower只是处理前端资产 - 在这种情况下,任何安装了bower的东西都不会在你的ruby代码中提供任何帮助方法。

示例:font-awesome可以双向安装,但gem会为您提供fa_icon视图帮助程序,当您使用bower安装它时,您将无法使用它。

另一方面,并​​非所有资产都以宝石的形式提供,因此凉亭可让您更多地选择安装。

就个人而言,我更喜欢使用凉亭,除非我知道使用宝石有一些极大的优势。

编辑:

显然还有另一种选择,即宝石和凉亭资产的组合 - rails-assets.org。它是一个宝石来源,包裹宝石中的凉亭组件。因此,如果您需要安装angular,您可以(除安装angular-rails gem之外)将此网址添加为您的Gemfile的源,然后安装rails-resource-angular

答案 1 :(得分:1)

Bower允许您升级/更新Web资产文件,如Bootstrap,jQuery等.Bower是一个程序,而Gem是为您编写的打包代码,您可以在Rails应用程序中使用。

如果你想比较Bower,你可以尝试将它与Bundle进行比较。不同之处在于,当Bower管理Web资产的版本时,Bundle用于安装和更新gem。要使bundle成功运行,您需要列出要在Gemfile中安装的gem。

有关Bower的更多信息,请参阅this文章。

答案 2 :(得分:1)

既然你已经知道Bower是什么以及Rails是如何工作的,我假设你问的是使用其中一个或哪个是你的前端依赖的优缺点。

我们可以以Bootstrap之类的方式为例。使用Rails gem的缺点,例如twitter-bootstrap-rails,每次更新或更改底层资产(Bootstrap)时,您必须等待gem的作者相应地更新gem。如果它们很慢或宝石的开发/维护被放弃,那么现在你就被困住了。专家是作者已经专门调整了资产以使用Rails,并且其实现通常记录良好且简单。 rails的bootstrap gem使它变得非常简单,你基本上只是删除sprockets指令并使用SASS的导入功能。

另一方面,Bower通常不会考虑使用Rails,并整合任何包含更多参与的包。例如,如果您使用bower获取BS,只需添加SASS导入(假设您正在抓取SASS版本的BS)将不起作用,因为SASS加载路径不会设置为查看{{1默认情况下,文件夹。

我认为如果你想在你的Rails工作流程中加入bower,你真的应该看看rails-assets gem。它使凉亭的整合更加简单。我还要看看this episode from GoRails关于使用rails-assets的问题。作者Chris Oliver似乎认为这是可行的方法。