【问题标题】:Bootstrap-sass Gem v.s. CDNBootstrap-sass 宝石 vs.内容分发网络
【发布时间】:2016-01-09 11:29:07
【问题描述】:

各种 Ruby on Rails 教程鼓励灌输 bootstrap-sass gem。为什么这是一个约定而不是指向 CDN?

我已包含在我的应用程序的标题中:

  <!-- BOOTSTRAP CSS 3.3.5 CDN: --> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">

在页脚中:

  <!-- BOOTSTRAP JS 3.3.5 CDN --><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js" type="text/javascript"></script>

假设我一直在连接到互联网的开发机器上工作:使用引导 gem 而不是仅仅指向 CDN 背后的原因是什么?指向客户端可能已经缓存文件的 CDN 不是总是更快吗?

【问题讨论】:

    标签: css ruby-on-rails twitter-bootstrap cdn


    【解决方案1】:

    Rails 教程建议使用bootstrap-sass gem 的可能原因只是为了方便;作为 Rails 的开发人员,我们习惯于在 Gemfile 中添加一行来集成第三方库。

    gem 还有其他好处:在您执行bundle install 之后,您将不需要互联网连接来加载开发环境的资产(无需连接到外部 CDN)。您也可以使用SASS 覆盖 Bootstrap 混合变量并自定义框架。

    除了这些好处,如果您不自定义 Bootstrap,则无需在生产中使用 boostrap-sass gem。事实上,您关于客户可能已经拥有常见 JS/CSS 框架的 CDN 托管版本的论点当然是有效的。

    简短回答:不要将boostrap-sass gem 视为惯例。这是一个很好的定制起点,但如果不需要定制,那么使用 CDN 是完全合理的。

    【讨论】:

    • 假设版本相同,是否可以将 bootstrap gem 包含在“group :development”中以允许在没有互联网的情况下进行本地开发?
    • 一般来说,我希望对 Bootstrap 的任何自定义都发生在一个单独的 CSS 文件中(因此您不会直接修改原始 Bootstrap 文件)。我很难理解为什么你会在生产环境中运行 bootstrap-sass gem。
    • 您可以这样做,但您必须修改视图布局和/或资产清单文件,以根据 Rails.env 有条件地引用 CDN 或 Bootstrap 的本地变体。
    • 我不同意它在教程中主要是为了方便。使用 bootstrap-sass 的重点在于它与 sass 管道巧妙地集成在一起,您可以充分利用 bootstrap 作为 sass 代码。至于我,将引导程序特定的类放在你的 html 中是一个很大的禁忌。我认为最好将语义类放在您的 html 中,并使用适当的技术(如导入、扩展等)链接应用程序的 scss/sass 文件中特定于引导程序的内容......版本的) CSS 框架...
    • 另外,如果您的应用程序还有一些额外的 css/less/sass,如果您使用 CDN 进行引导,您将下载多个 css 文件,而 Rails 按照约定包装一切都在一个 application.css 中。鉴于 Rails 仍然是 HTTP1.1,使用 CDN 甚至可能会降低速度...
    【解决方案2】:

    使用 CDN 只是为您提供 CSS,将您的 HTML 文件硬连接到特定的引导程序版本。相反,使用 SASS/LESS 版本的 bootstrap 允许您将语义类放在 HTML 上,并在应用程序特定的 SASS/LESS 文件中建立语义类和 Bootstrap 之间的连接(使用@import@extend .. . 语句)

    如果您明智地使用此技术,您最终将获得较小的下载量,因为您只导入您在应用程序中实际使用的引导程序部分,并且您将完全分离关注点,允许您切换 sass/less 框架无需接触您的 HTML 文件(理想情况下)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2021-01-26
      • 2015-10-21
      • 1970-01-01
      • 2012-09-21
      • 2011-04-15
      • 1970-01-01
      相关资源
      最近更新 更多