rails 的 bower 和 gems 有什么不同?

What is the different between bower and gems for rails?

据我们所知,bower 使管理前端文件(如 j-query、bootstrap 和许多其他文件)变得更加容易,而无需从源代码下载手动。那么,rails 的宝石怎么样? ruby on rails 可以像 bower 一样需要前端和管理文件。

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

rails 的 bower 和 gems 有何不同?我应该在 rails 开发中使用 Bower 来管理前端文件吗?

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

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

有关 Bower 的更多信息,您可以阅读 this 文章。

好吧,这个问题是基于意见的,所以我也会写我自己的。这里有两个主要区别。首先,正如您已经提到的那样,Bower 仅用于处理前端资产 - 在这种情况下,使用 Bower 安装的任何东西都不会在您的 ruby 代码中提供任何辅助方法。

示例:font-awesome 可以两种方式安装,但是 gem 会给你 fa_icon 查看助手,当你用 bower 安装它时你不会有。

另一方面,并​​非所有资产都以 gem 的形式提供,因此 bower 为您提供了更多的安装选择。

就我个人而言,我更喜欢使用 bower,除非我知道使用 gem 有一些极端的优势。

编辑:

显然还有另一种选择,它是 gems 和凉亭资产的组合 - rails-assets.org。它是一个 gem 源代码,将 Bower 组件包装在 gem 中。因此,如果您需要安装 angular,您可以(除了安装 angular-rails gem)将此 url 作为源添加到您的 Gemfile,然后安装 rails-resource-angular .

既然您已经知道 Bower 是什么以及 Rails 是如何工作的,我假设您要问的是使用其中一种作为前端依赖项的 pros/cons 是什么。

我们可以拿Bootstrap这样的东西举例。使用 Rails gem 的缺点是 twitter-bootstrap-rails 是每次更新或更改基础资产 (Bootstrap) 时,您必须等待 gem 的作者相应地更新 gem。如果它们很慢或者 gem 的 development/maintenance 被放弃了,那么现在你就被卡住了。优点是作者专门调整了资产以与 Rails 一起使用,并且其实现通常有据可查且简单。 rails 的 bootstrap gem 非常简单,您基本上只需删除 sprockets 指令并使用 SASS 的导入功能。

Bower,另一方面,通常不是在考虑 Rails 的情况下创建的,集成任何包我都需要更多参与。例如,如果您使用 bower 获取 BS,仅添加 SASS 导入(假设您正在获取 BS 的 SASS 版本)是行不通的,因为 SASS 加载路径是默认情况下不会设置为查看您的 bower_components/bootstrap 文件夹。

我认为,如果您想将 Bower 合并到您的 Rails 工作流程中,您真的应该看看 rails-assets gem. It makes the incorporation of bower much simpler. I would also take a look at this episode from GoRails 关于使用 rails-assets 的内容。作者 Chris Oliver 似乎认为这是要走的路。