ruby-on-rails - 当您可以在 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 ?
解决方案
没有任何完整性要求,这里有几个不同的原因,您可能希望通过 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 的缓存版本,这使得减少样式表大小的努力已经过时了。
当然也有缺点,例如更新可能需要更长的时间才能到达您的手中。
推荐阅读
- hololens - 如何将 HoloLens 2 模拟器与本地 UDP 发件人连接
- python - Minimalmodbus 重新连接
- snowflake-cloud-data-platform - 如何从雪花中的变体列创建子集?
- keycloak - 使用 keycloak 中的角色限制 gitea 访问
- user-interface - 如何在颤动中居中对齐卡片内的小部件
- c# - FileTarget 不支持 Nlog 参数 maxArchiveDays
- python - 将 Python numpy 数组转换为 PyQt QPixmap 图像导致噪声图像
- java - 寻找带有@ManyToMany + Repository 完成阶段的样本
- python - 如何将@tf.function 与 Keras 顺序 API 一起使用?
- function - Powershell有条件地将开关和参数添加到函数调用