1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

application.jsがjavascriptの中に2つ存在するのはどういうこと??

Posted at

はじめに

ふとjavascriptのディレクトリについていろいろいじっているときに「あれなんか2つある?」と不思議に思ったのでそれぞれどんな違いがあるのか気になったので調べてみたことをアウトプットしようと思います。

どんな状況だったのか

Image from Gyazo

はい。上の画像のようにapplication.jsという名称のフォルダがjavascriptディレクトリに2つ存在しているのがわかるかと思います。
はじめ、この2つの違いが判らず、GPTから「●●というコードをapplication.jsに追加することをおすすめします」というような提案?をえたときとりあえずでjavascript/application.jsにコードを追記していました。

application.jsが2つある理由

Railsが提供するアセットパイプライン1と、StimulusJS2を使ったモダンなJavaScript3の管理を分けているからになり、具体的に次のような違いが挙げられます。

1. app/javascript/application.js

  • 役割: アプリケーション全体で使うJavaScriptの設定を行う場所で、UJSなどのライブラリをインポートして、アプリケーション全体のJavaScriptの初期化を行う
  • 追加する内容: jQuery4やRails UJS5をここに加えるのが一般的

2. app/javascript/controllers/application.js

  • 役割: StimulusJSのコントローラーを管理する場所で、特定のDOM要素6に対して動作するJavaScriptのコードを追加することができる
  • 追加する内容: Stimulusのコントローラーをここに定義して、特定の機能を持たせることが主な目的

どちらに加えればいいか

  • UJSやjQueryはapp/javascript/application.jsに加えるのが正しい使い方。このファイルは、アプリ全体で共通して使う設定を行うための場所だから

さいごに

今回改めて調べてみて、まだ100%完全理解とまではいかないものの「アプリ全体に共通のJavaScriptはapplication.jsで定義し、特定の機能やインタラクションはcontrollers/application.jsで管理する感じ」というのがつかめました。まだまだみつのりは長い!!

  1. アセットパイプライン:Railsで使用される仕組みで、JavaScriptやCSS、画像などのアセットを効率的に管理・配信するためのもの。これにより、アセットを結合、圧縮、キャッシュ可能にして、ページの読み込み速度を向上させることができる

  2. StimulusJS:Railsアプリケーションに特化した軽量のJavaScriptフレームワークで、HTMLのデータ属性を使って、簡単にインタラクティブな機能を追加できるように設計されている。これにより、JavaScriptのコードをHTMLに近い形で記述できる

  3. StimulusJSを使ったモダンなJavaScript:StimulusJSの機能を利用して、HTMLとJavaScriptを組み合わせて、クリーンでメンテナンスしやすいインターフェースを構築する方法のこと。これにより、アプリケーションの動的な部分を簡単に管理できるようになる。

  4. jQuery:JavaScriptのライブラリで、DOM操作、イベント処理、Ajax通信などを簡単に行うためのもの。簡潔な文法で、ブラウザ間の互換性を意識せずにプログラミングできる点が特徴。

  5. Rails UJS:Railsで使用されるUnobtrusive JavaScriptの略で、RailsアプリケーションにおけるAjaxや非同期通信を簡単に実装するための仕組み。これにより、ページをリロードせずにデータのやり取りが可能になる。

  6. 特定のDOM要素:HTML文書内の特定の要素のことを指す。たとえば、divpなどのタグを使って、特定の位置に配置された要素のことを言う。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?