webpackerでJquery導入
久しぶりの投稿になります。
Rails6.0から標準となったwebpackerを使ってJqueryを導入する方法について記事を書きたいと思います。webpackerを使ったJqueryの導入方法に関しては他に記事があったのですが、自分のような初心者には少し説明不足で、少しハマってしまったので、今回はそこを補って記事を書いていきたいと思います。
まず、「webpackerとは」というところと「なぜwebpackerを使うのか」を簡単にながらまとめさせてもらいます。
環境
ruby 2.7.1p83
rails 6.0.3.4
webpackerとは
WebpackをRuby on Railsで使うためのGemパッケージのこと
webpackとは
JavaScript、CSS、画像などの静的ファイルを1つにまとめて管理するためのモジュールバンドラの1つ。最近のモダンなJavaScriptフレームワークのモジュールバンドラとしてはデフォルトスタンダードになっている。
モジュールバンドラとは
複数のモジュールの依存関係を解決し、一つにまとめる(バンドルする)ツールのこと
モジュールとは
1つのJavaScriptファイルに長い処理を書くと可読性が悪くなるため、一般にページごとに複数ファイルに分割を行う。この分割されたJavaScriptファイルやSassファイルのことを「モジュール」と呼ぶ
なぜモジュールバンドラが必要なのか
可読性が高くなり、保守しやすくなる
→ 機能やページごとにJavaScriptファイルが分かれていることでコードが読みやすくなるJavaScriptファイルなどがひとつにまとめられ依存関係が解決されていることで読み込みが早くなる
→ ブラウザとサーバの間はHTTP1.1のプロトコルで通信しており、一度に処理できるリクエストの数は限られている。リクエストの数が増えるとパフォーマンスに影響を与えるため、モジュールは一つにまとめて送信したほうが高速になるES6非対応の古いブラウザでも解釈できる形(ES5)に自動で変換してくれる
→ JavaScriptがモジュール化したのがES6(2015年)からであるので、それ以前のブラウザでは読み込むことができない。これをwebpackはES5に変換してくれる。
それでは、実際に導入方法を書いていきます。
導入方法
まずはterminalからyarnを使ってjqueryをインストールします。
$ yarn add jquery
以下ファイルに設定などを追記していきます。
const { environment } = require('@rails/webpacker')
// 追記
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery/src/jquery',
jQuery: 'jquery/src/jquery'
})
)
// ここまで
module.exports = environment
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require('jquery') #追記
今回は「toppage.js」というファイルを作り、読み込ませました。
require("jquery")
require("toppage.js")
console.log("hogehoge")
ここまで読んでくださりありがとうございました。
同じような初心者のお役に立てれば幸いです。
参考
https://qiita.com/masahisa/items/eaacb0c3b82f4a11fc13
https://www.botreetechnologies.com/blog/introducing-jquery-in-rails-6-using-webpacker
https://ics.media/entry/12140/
Author And Source
この問題について(webpackerでJquery導入), 我々は、より多くの情報をここで見つけました https://qiita.com/k-mashi/items/4ce5cbe2c8b29d44eb8d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .