在没有任何完整性声明的情况下,以下是一些不同的原因,为什么您可能希望通过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版本,这使得减少样式表大小的整个工作有点过时。
当然也有缺点,例如更新可能需要更长的时间才能到达。