2015-10-12 16 views
8

Ruby on Railsのさまざまなチュートリアルでは、ブートストラップ・サスの宝石を注入することを推奨しています。これはなぜCDNを指すのではなく、条約ですか?Bootstrap-sass Gem v.s. CDN

私は私のアプリのヘッダに含まれている:私は常にインターネットに接続され、開発ボックスから働いていると仮定すると、

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

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

とフッターに何単純にCDNを指すのではなく、ブートストラップの宝石を使用する理由は何ですか?クライアントがそのファイルをすでにキャッシュしている可能性が高いCDNを指すのはいつもより速いのですか?

答えて

10

Railsのチュートリアルではbootstrap-sassの宝石が示唆されているのは、便宜上の理由です。 Railsの開発者として、私たちはGemfileにサードパーティのライブラリを統合するための行を追加することに慣れています。

宝石には追加の利点があります:bundle installを実行した後、開発環境の資産を読み込むためにインターネット接続は必要ありません(外部CDNに接続する必要はありません)。 SASSを使用して、ブートストラップのmixin変数を上書きし、フレームワークをカスタマイズすることもできます。

これらの利点は別として、ブートストラップをカスタマイズしていない場合は、生産中にboostrap-sass gemを使用する必要はありません。実際、既にCDNのホストされたバージョンの共通JS/CSSフレームワークを持つ可能性のあるクライアントに関するあなたの主張は確かに有効です。

短い答え:boostrap-sassという慣習を慣習として考えないでください。それはカスタマイズのための良い出発点ですが、カスタマイズが必要ない場合は、CDNと一緒に行くことは完全に合理的です。

+0

バージョンが同じであると仮定すると、インターネットなしでのローカル開発を可能にするために、 "グループ:開発"にブートストラップの宝石を含めることは合理的でしょうか? – woodenfox

+0

一般に、ブートストラップへのカスタマイズは、別のCSSファイルで行われることが予想されます(元のブートストラップファイルを直接変更しないようにします)。ブートストラップ・サスの宝石をプロダクションで使う理由が分かりません。 – woodenfox

+0

あなたはそれを行うことができますが、Rails.envに応じて、ブートストラップのcdnまたはローカルバリアントを条件付きで参照するために、ビューレイアウトおよび/またはアセットマニフェストファイルに変更を加える必要があります。 –

-1

CDNを使用するだけでCSSが提供され、HTMLファイルを特定のブートストラップバージョンにハードワイヤリングできます。逆にブートストラップのSASS/LESSバージョンを使用すると、セマンティッククラスをHTMLに配置して、アプリケーション固有のSASS/LESSファイルのセマンティッククラスとブートストラップを接続することができます(@import@extend ...ステートメントを使用)

このテクニックを賢明に使用すると、アプリケーションで実際に使用しているブートストラップの部分だけをインポートするため、ダウンロードサイズが小さくなるため、懸念が明確に分離され、sass/lessフレームワークを切り替えることができますあなたのHTMLファイルに触れることなく(理想的には)。