Rails を使用する場合、Sprockets ディレクティブはマニフェスト ファイルでどのように読み取られますか?
概要
なぜ最初にディレクティブをコメントアウトし、等号を追加する必要があるのでしょうか?ディレクティブのコメントを外して、ブラウザに application.js ファイルをロードすると、jquery ライブラリの内容が表示されなくなります。Rails は初めてなので、ご容赦ください…今日、アセット パイプラインを調査しているときにマニフェスト ファイル (application.js) を見ていたところ、//= require jquery などのディレクティブがどのように読み取られているのか興味がありました。これがバックグラウンドでどのように動作しているのか興味があります。これはSprocketsがバックグラウンドで何かを行っているのでしょうか?どうやって?
また、独自のカスタム CSS スタイルシートを追加する場合、application.css マニフェスト ファイルに require ディレクティブを追加しますか、それとも <link rel=“stylesheet” type=“text/css” href= などのスタイルシート リンクを追加しますか? “mystyle.css”>?それとも両方やりますか?マニフェストファイル内に直接CSSを追加すべきではないと思います…
ありがとう!
解決策
どこまで知っているかわからないので、詳しく説明してみます。
Rails はアセット (画像、CSS、js ファイルなど) を別々の場所に保存するため、すべてが整然としており、開発者にとって使いやすいものになっています。それが Assed Pipeline と呼ばれるものです。 Rails がこれらのアセット (CSS ファイルなど) をロードすると、複数の呼び出しを避けるために、すべてのアプリ ファイルから 1 つの大きなファイルが作成されます。そして、マニフェストは、その大きなCSSファイルにどのファイルを含めるかというRailsのマップまたはルールのようなもので、この *= はRailsに正確に何を含めるべきかを指示するものです(私はこれをRails構文と考えています)。したがって、次のような場合:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
require_tree 。 //= require jquery などは Rails に javascripts フォルダーからすべてのファイルを取得するように指示しますが、 //= require jquery などは Rails に特殊なケース、つまり通常 gem によって使用されるアセット (これらのファイルは javascripts/stylesheets フォルダーに決して保存しないので、 //= require_tree .見えません)。
独自の CSS ファイルを追加する場合は、それをスタイルシート フォルダーに追加するだけで、require_tree が Rails にそれを全体像に含めるように通知します。しかし、Rails にはスキャフォールディングという優れた機能があります。コマンド Rails g scaffold User を使用してオブジェクトをスキャフォールディングすると、ビュー、コントローラー、モデル、テストなど、すべてが Rails によって作成されます (他に何があるかは誰にもわかりません:))。したがって、この場合、CSS ファイルを作成する必要さえありません。CSS ルールをそれに挿入するだけで、Rails が require_tree によるファイルを見つけます。
Sass ファイルの場合は少し別の話になります。
したがって、Bootstrap を使用する場合 (おそらくそうするでしょう)、これも理解しておくことが重要です。
お役に立てれば