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

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

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

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

jQuery

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

Q&A

解決済

6回答

3595閲覧

javascriptかjqueryか?

twin_bird

総合スコア230

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2015/05/04 13:30

javascriptとjqueryの基本を一通り勉強したうえで、下記のような疑問を持ちました。
「jqueryのほうが効率的でjavascriptってそんなにかかないんじゃないの?」

そこで質問です。
jqueryよりjavascriptで書いたほうが良いプログラムやjavascriptでしかかけないプログラムなど具体的な例がありましたら教えてください。

それぞれのメリットを知りたいと思っています。
たくさんの回答をお待ちしております。

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

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

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

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

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

guest

回答6

0

自己解決

処理速度・DOM操作がポイントなのですね~
どちらかではなく適宜使い分けていくことが重要なのだと感じました。
たくさんの回答ありがとうございました!
まだまだ勉強不足ですが、回答いただいた内容を意識して勉強に取り組んでいきたいと思います。

投稿2015/05/07 09:11

twin_bird

総合スコア230

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

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

0

最近は、DOMを使わないところで JavaScriptが登場することが多いので、
jQueryあればそれでいいや、なことは どんどん減っていってます。

1.node.js (io.js) などのサーバーサイド JavaScriptのケース。
サーバーサイド JavaScript の場合、ほぼすべての局面でDOMは登場しませんね。
2.virtual-DOM を使うライブラリを使う場合。
React.JS が話題になってますが、DOM自体を操作するのではなく、
fullのDOMを毎回再構築するかのような ロジックを書いておいて、
実際には 現在のDOMと違う差分だけ反映してくれる、というもの。
結果処理だけ書いておけばいいので、処理構造がシンプルになります。
(場合によっては処理も大幅に速くなります。)
3. 3Dなど、webGLを使う処理 (canvasやSVG)。
3D表現ライブラリでデファクトスタンダードな three.js などは、
jQueryを併用すると遅くなることが知られています。
4. d3.js など、データ処理をクライアントで行うもの
クライアント側処理が結構大きいものだと、専用のDOMアクセス用ライブラリも
内包されていることが多いです。
5. MVCフレームワークの多くのもの。
データフローをきちんと制御したい場合に使うフレームワークでは、Viewに
jQueryを使わないように誘導するものが多数あります。
DOM構築は HTMLテンプレートでほぼ解決するはず、とされます。

  1. jQuery の対抗馬もいくつかあります。

例えば モバイル環境では、jQuery mobile 以外の選択肢も多いので、
その場合は、jQueryを前提としていないことも多いです。

※jQuery使っておけばメモリリークしない、というのはあまりに盲信かもしれませんね。
メモリのパフォーマンスには常に気を付けましょう。

投稿2015/05/06 08:49

okayu3

総合スコア200

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

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

twin_bird

2015/05/07 09:06

回答ありがとうございました!
guest

0

基本的にはjQueryを使った方がコード量の面でもクロスブラウザの面でも有利になります。
実績も豊富にありますから、使用を禁止されていないプロジェクトであれば積極的に使っていっても問題ないかと思います。
ただ、素のJavaScriptを知っておくとjQueryが内部で実際にはどのような処理をしているのかをソースコードを読んで把握できたり、ライブラリを何らかの事情で使えない場面でも同様のコードを自力で組めたりしていざというときに有利にはなるかと。

jQueryは体感では全くと言っていいほど差が出ませんが、内部でいろんな処理をしている分、素のJavaScriptを書くのに比べて処理速度は遅いです。
ですのでBlobやInt32Arrayなど高速に大量のデータを扱う分野ではjQueryの出番はほとんどないでしょう。
まぁこれも通常は内部実装をすべて自分で書く必要はなく、別のライブラリがありますが。

ところで、jQueryオブジェクトには配列のような性質があり、$('.content')[0]など添え字をつけることで本来のDOMオブジェクトが取得できます。(getメソッドでも同じ意味になります)
また、jQuery EventオブジェクトもoriginalEventというプロパティで本来のイベントオブジェクトを取得できます。
元々のオブジェクトにも触れる手段が用意されていることで必要な時だけ素のJavaScriptを使うという運用が可能です。

jQueryはセレクタの記述を間違えても内部の要素数が0になるだけで、記述ミスに気づきにくい欠点があるといえばあります。

投稿2015/05/04 13:59

htsign

総合スコア870

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

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

twin_bird

2015/05/05 04:26

回答ありがとうございました!
guest

0

jQueryを使うことによるメリットは、以下のようなものがあると考えています。

  • IE8以下が典型的な、古いブラウザ・バグのあるブラウザにも対応できる
  • メソッドチェーンという形で、すっきり書ける(生DOMだと、一時変数が必要になります)
  • 豊富なプラグイン

一方で、デメリットとしては以下のようなものがあります。

  • 極端な条件や特定のブラウザでだけ必要な操作が裏で入るため、直接DOMを使うより重い
  • 他に使うライブラリがある場合、干渉することがある

htsignさんのコメントにもありますけど、速度にシビアな部分だけDOMを使うなんていう技も可能ですし、あと、jQueryのソース自体ももちろんJavaScriptですので、読むと参考になることも多々あります。

投稿2015/05/07 02:44

maisumakun

総合スコア145183

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

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

twin_bird

2015/05/07 09:08

回答ありがとうございました!
guest

0

例えばJavaScriptだと、

var input = document.getElementById("hoge");
var val = input.value;

とした時、id:hogeのDOMが存在する時は良いですが、存在しない場合、2行目でid:hogeがundefinedとなるため、そこにvalueプロパティは存在しませんからエラーが発生してスクリプトが停止し、それ以降のスクリプトが実行されなくなります。

ですが、jQueryを使って、

var val = $("#hoge").val();

とした場合、id:hogeがあれば値が取れるし、無ければ何も起こりませんので以後のスクリプトも実行されます。

これを良しとするかしないかは要件により変わりますが、大抵の場合、JavaScriptの実行が知らないうちに止まっていると困るので、jQueryを使った方が現実的です。

また、jQueryでDOMを操作すると素のJavaScriptで操作するよりも遅いのですが、これはメモリ管理をしっかりやっているからで、知らない人が素のJavaScriptでDOMを操作しまくるとメモリリークしまくるはずです。

ですから、勉強するなら素のJavaScriptをしっかりやるべきですが、仕事で現在jQueryを使わない理由は見当たらないでしょう。

投稿2015/05/05 04:28

編集2015/05/05 04:32
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

twin_bird

2015/05/05 04:34

回答ありがとうございます!
guest

0

jQueryはクロスブラウザ対策という意味ではありがたいものでしたが、HTML5、CSS3勧告によって、jQueryのありがたみはかなり薄れたと思っています。
JavaScriptネイティブで書いても、コード量は以前の半分程度で済んでしまう事が多くなりました。
あまりjQueryに頼り切らない方がコーディング力が上がり、オリジナリティのある作品ができると私は思います。

投稿2015/05/04 15:30

rik

総合スコア1151

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

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

twin_bird

2015/05/05 04:25

回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問