質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

5回答

8990閲覧

jQueryは必要ない?

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

7グッド

12クリップ

投稿2016/07/14 01:57

編集2016/07/14 02:09

お世話になっています。
今回はjsについての質問です。

ブラウザ側でアニメーションやDOM操作を行いたいと思い調べると、
**「jQueryを使えばいい」**みたいな記事をたくさん見つけました。
jQuery、確かに便利そうで、しかも覚えやすい感じがしました。
(メソッドチェーンが個人的には直感的で分かりやすかったです。)
情報も(古いものが多いですが)かなりあって「これいいじゃん!」と使い始めました。

しかし、調べていくうちに**「jQueryは前時代的」だの「遅い」**だの
ひょっとしてこれを使ってはまずいのか?と思うような記事もありました。

そしてその記事には比較として**「仮想DOM」**なるものが出ていることが大半です。

仮想DOMを使うと相当に早くなる?(伝聞なので分かりませんが)らしいのですが、
これだけボロクソに書かれていてjQueryをメリットは今現在でも存在するのでしょうか?
リアルなDOM操作と仮想DOM操作の違いも、それらで出来ること/出来ないこと
いまいちピンときていないので、教えていただけたらと思います。

出来れば、どちらかに肩入れせずに中立な意見を聞きたいです。
(仮想DOM派の記事、好きを上げて他を貶すに見えてしまって
真っ当な意見なのか判断できないものが多かったため。)

suke, YashaWedyue, makoto-n, gusao, len_prog, hoger, maisumakun👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

jQuery と React(仮想DOM) や Angularなどは、もはや用途が違います。

SPAはご存知でしょうか?
Single Page Application というものなのですが、画面遷移をしないアプリケーションのことです。

  1. 画面の項目に入力をする
  2. ボタンを押してサブミットをする
  3. サーバー側で入力情報の処理をし、次の画面の情報を返す

というのが従来の一般的なWebアプリケーションですが、
通信は全てAjaxでして、画面の作成はJavascriptでやっちゃおうというのがSPAです。
ボタンを押した時の画面の一瞬のちらつきがなく、
ユーザーにスムーズに画面遷移をしているように錯覚させるものですね。

SPAは、画面の情報はがらっと変わるため、あたかも画面遷移しているように見えますが、
同じ画面内で新しい表示情報を1からJavascriptで作成しているんです。
どれだけすさまじいことかイメージつきますかね?

javascript

1var table = document.createElement("table") 2var tr = document.createElement("tr") 3var td = document.createElement("td") 4 5table.appendChild(tr); 6tr.appendChild(td); 7 8document.getElementById("table-area").appendChild(table);

これでやっと中身が空っぽの1行のテーブルです。
途方もない作業です。

こんなことやってられないので、それ用のフレームワークがあります。
それがReact(仮想DOM)だったり、Angularだったりします。

jQueryでもやれないことはないですよ。
ただ上記の例と、あまり大差ないコードになってしまいます。
めちゃくちゃコードを書かないといけません。
コードは書けば書くほどバグります。遅くなります。
そして、何がなんだか分からなくってきて、作った本人にしか直せないような状態の
コードが出来上がるわけです。
作った本人すらも直せないかもしれません。

だからこういう用途では、もうjQueryを使うのはやめようという話なだけです。
ちょっとしたアニメーションやDOM操作なのであれば、全然jQueryでいいと思います。
むしろjQueryの方がいいぐらいに思っています。

確かに、最近はjQueryの地位が低くなってきているような印象は受けますが、
僕は当分なくなることはないと思います。
なぜなら、前述した通りそもそも用途が違うからです。
バージョンアップもされていってますし、jQueryの開発がストップしているわけでもありません。

なので、用途によって jQuery は使えばいいと思いますよ。

jQueryにも画面をごっそり作り直せるテンプレートエンジンのような
プラグインも多数ありますが、それをするなら Reactなどを使った方がいいとは思いますね。
それらのプラグインは、Reactなどが出てきてなかった時に作られたものだと思うので、
せっかくSPAを作りやすいフレームワークが出てきたのに、
わざわざjQueryプラグインでやる理由は少ないような気はします。

投稿2016/07/14 04:59

編集2016/07/14 10:51
root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/07/14 08:15

ご回答ありがとうございます。 SPAで設計しなければReact.js等を使う必要はないということですか?
root_jp

2016/07/14 10:49

そうですねぇ。 サブミットをして画面を遷移はさせるけど、各ページのJavascriptでの動きに React.js等を使うのはあんまり聞かないですねぇ。 オーバースペックすぎるんじゃないでしょうか。
退会済みユーザー

退会済みユーザー

2016/07/15 00:09

ありがとうございます、とりあえずはjQueryを使っていきながら、 React.js等も触って今後の新規案件で活かしていきたいと思います!
guest

0

まず、大前提ですが、何を使うにしてもブラウザへ最終的に描画を行うのは、DOM APIです。これを、

  • 直接叩いて使う
  • jQueryのような薄いラッパーから使う
  • Reactのような、仮想DOMラッパーから使う

というような違いです。そして、仮想DOMが「速い」というのは、あくまでSPAと呼ばれるような「全HTMLを置き換えてしまうのと比較して」の話です。ページのごく一部だけ装飾的に書き換えるなど、DOMを直接叩けば済むような話であれば、Reactを使うまでもありません。

あと、jQueryの地位が低下している原因として、DOM API自体の進化、ということがあります。昔はIEを筆頭に癖が強く、DOM操作がまともに行えなかったので、バグ吸収用にjQueryなどのライブラリが必要だった、という側面もあったのですが、ブラウザ同士の互換性が向上してきたことで、そうした必要性が薄れています。

投稿2016/07/14 02:25

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/07/14 02:38

ご回答ありがとうございます。 SPAと言うのはたとえばサーバサイドはAPIのみでクライアントサイドからAPI叩いて画面を切り替えるみたいな感じですか? (どこかの記事でサーバとビューを切り離して上記のような構成にするべきみたいなことも書いてありました。)
guest

0

React を使うと全部 React で書き換えなきゃならなくて jQuery など他のライブラリが使えなくなることがあります。
他のライブラリが使えないっていうのは結構致命的だと思うんですが。
たとえば jQuery の膨大な過去の資産が使えなくなるとか
Google Map などの API が使えなくなるとか

投稿2016/07/14 02:33

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/07/14 02:40

ご回答ありがとうございます。 外部APIを使えないと少し困りますね。 Facebookのようなページだからこそ使えるのかもしれませんね。
guest

0

仮想DOM、について全く触れたことがなかったので、調べてみました。仮想DOMというよりReact.jsについてでしょうか。

見てみた感想としては、React.jsは**「HTMLタグ構造をサーバサイドで構成せず、クライアントサイドで組みたい人向け」**でしょうか。私はHTMLを組むことはサーバサイドの仕事だと思っていますので、私がReact.jsを使う機会はあまりなさそうです。データだけをHTTPでやり取りし、クライアントサイドで組むようなサイトであればReact.jsのメリットは高いと思います。むしろFacebookはそのためにReact.jsを作ったのではないでしょうか。

React.jsのメリットの説明はこちらの記事に任せようと思います。
http://qiita.com/rgbkids/items/8ec309d1bf5e203d2b19

投稿2016/07/14 02:32

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/07/14 02:39

ご回答ありがとうございます。 私も直接PHP等にHTMLを書きたいので、そういう人にはReact.jsは向いていない感じですね。
guest

0

「必要ない」といえば必要ないですが、時と場合によって「便利」になることはあります。

昨今はquerySelectorなどによってDOM操作が楽になってきているし、
アニメーションはCSSによってある程度作ることができます。

よほど複雑なDOM操作をしない限り使わないでも良いですが、
jQueryはやっぱり手軽で使いやすいと思いますよ!


AngularやReactと比較されていますが、
併用することもできますし、そもそもAngularはjQueryの簡略化されたライブラリを包括していたりします。

私はあったら便利なので使うことがありますし、
「jQueryは古いから」みたいな風潮よりも、自分の満足度で決めるのが一番良いと思います。
jQueryで書かれたコードは単純でわかりやすいですしね :)

投稿2016/07/14 09:51

thrbrd

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/07/15 00:08

ご回答ありがとうございます。 ということは私が作ろうとしているようなアプリではjQueryで十分みたいですね。 (むしろjQueryすら必要ない可能性がありますが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問