为什么在 rails 应用程序中只需一行包含 bootstrap 就可以将 ruby gem 用于 bootstrap?

Why use ruby gem for bootstrap when you can just one line include bootstrap in a rails app?

为什么在 bootstrap 中使用 ruby gem 可以在 rails 应用程序中仅包含一行 bootstrap?

我可以在 application.html.erb 文件中的这一行中使用 bootstrap: <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">

为什么人们使用 gem 之类的 https://github.com/seyhunak/twitter-bootstrap-rails

没有任何完整性声明,以下是您可能希望通过 gem.

包含 Bootstrap 的几个不同原因

首先,它允许您以比通过引用包含库更强大的方式自定义库。如果您浏览链接项目的自述文件,您会注意到您可以使用 LESS 或 SASS,并覆盖 Bootstrap 中的单个变量。这使得创建您自己的 Bootstrap 主题变得容易得多,例如,创建干净且可维护的 CSS 类.

其次,gem 经常提供比 Bootstrap 更多的功能。通过提供生成器或覆盖 Rails 中的模板,它们可以轻松构建新页面。他们有时甚至会为某些 Bootstrap 功能提供自定义 Javascript 实现,以便更轻松地将它们与 Rails 集成。例如,再次查看链接库及其导航栏的辅助方法:

<%= nav_bar do %>
     <%= menu_item "Home", root_path %>

    <%= drop_down "Products" do %>
        <%= menu_item "Latest", latest_products_path %>
        <%= menu_item "Top Sellers", popular_products_path %>
        <%= drop_down_divider %>
        <%= menu_item "Discount Items", discounted_products_path %>
    <% end %>

    <%= menu_item "About Us", about_us_path %>
    <%= menu_item "Contact", contact_path %>
<% end %>

太棒了。更少样板代码,无需担心...

最后,您拥有更多的控制权。您不依赖于 CDN,并且可以将 Bootstrap 紧密集成到您的资产管道中。 Imo,不过,这是一把双刃剑。一方面,通过排除库中不需要的部分,您可以获得比 Bootstrap 提供的文件更小的 CSS 文件。因为覆盖 Bootstrap 中的变量更容易,所以您自己的 CSS 也可能小得多。另一方面,用户可能已经从 CDN 获得了 Bootstrap 的缓存版本,这使得减少样式表大小的全部努力有点过时了。

当然也有缺点,例如更新可能需要更长的时间才能到达您手中。