代码之家  ›  专栏  ›  技术社区  ›  Henry Yang

当rails应用程序中只有一行包含bootstrap时,为什么要使用ruby gem作为引导呢?

  •  2
  • Henry Yang  · 技术社区  · 6 年前

    当rails应用程序中只有一行包含bootstrap时,为什么要使用ruby gem作为引导呢?

    我可以将bootstrap与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 ?

    1 回复  |  直到 6 年前
        1
  •  3
  •   jdno    6 年前

    在没有任何完整性声明的情况下,以下是一些不同的原因,为什么您可能希望通过gem包含引导。

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

    其次,gems通常提供的功能远不止包括引导。通过提供生成器或重写rails中的模板,可以很容易地构建新页面。它们有时甚至为某些引导功能提供定制的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紧密集成到您的资产管道中。不过,我觉得这是把双刃剑。一方面,通过排除不需要的部分库,可以获得比bootstrap提供的css文件更小的css文件。因为在bootstrap中更容易覆盖变量,所以您自己的css可能也要小得多。另一方面,用户可能已经从cdn缓存了一个bootstrap版本,这使得减少样式表大小的整个工作有点过时。

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