首页 > 解决方案 > 当您可以在 Rails 应用程序中仅包含一行引导程序时,为什么要使用 ruby​​ gem 进行引导程序?

问题描述

当您可以在 Rails 应用程序中仅包含一行引导程序时,为什么要使用 ruby​​ gem 进行引导程序?

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

为什么人们使用像https://github.com/seyhunak/twitter-bootstrap-rails这样的 gem ?

标签: ruby-on-railsrubyrubygemsbootstrap-4

解决方案


没有任何完整性要求,这里有几个不同的原因,您可能希望通过 gem 包含 Bootstrap。

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

其次,gems 通常提供的功能远不止包括 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 的缓存版本,这使得减少样式表大小的努力已经过时了。

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


推荐阅读