ネイティブJavaScript開発にはどのような利点がありますか?[閉まっている]


33

ネイティブJavaScriptと比較した場合、jQueryの開発がどれほど簡単かを考えると、jQueryのようなライブラリを完全に見捨てる理由は何ですか?

これは、jQueryに制限があるのか​​、遅いのですか?つまり、jQueryがネイティブjavascriptと比べて非常に簡単な場合、人々はまだ純粋なjavascriptを使用しなければならない理由は何ですか?


1
jQueryは単なるライブラリです。jQueryを使用するネイティブJSの作成は、依然としてネイティブJSを作成しています。これは、「ネイティブC ++開発にはどのような利点がありますか?」「Boostを使用しないC ++開発」について話しているとき。
ザック


1
jQueryと他の古いLIBSの主な目的は、(例えば異なるJSインタフェースと異なるブラウザの上部にあるファサードを作ることだったXMLHttpRequestActiveXObject、またはaddEventListenerattachEvent、またはcss selectorsxpath selectorsno selector supportこれらの問題のほとんどがいない最近のブラウザでは...、など)同じ基準に従っているためです。
inf3rno 14

回答:


89

車について話しましょう。

ああ待って、もうやった-しばらく前に会ったその時間を覚えている?車について話しました。実際、あなたは自動車の専門家であるように見えました。最新のフォーミュラ1レースについて、正しい点、間違っている点、エキサイティングな点を詳細に説明することができました。価格と在庫状況を含め、ランボルギーニのすべてのモデルを心得ていました。あなたは自分でフェラーリ599 GTBフィオラノを購入することさえ考えていて、それのために貯金をしていました(ステーキディナーはあまり役に立たなかったに違いない)。

トヨタの欠点を大きな興奮した声で説明していると、突然椅子から飛び上がって空中に叫び、拳を振りかざしました。車の整備士になります!」

そしてあなたは行った。あなたはインタビューを受けました、ボスマンはあなたの知識で私と同じくらい感銘を受けました、そして、あなたは雇われました。最初のクライアントが入った。彼のクラッチは壊れていた。あなたはそれを調べましたが、何をすべきかわかりませんでした。実際のところ、あなたはボスマンがあなたに与えたアドバイスに従う方法を全く知りませんでした。あなたは解雇されました。

しかし、それはどうでしょう!?あなたは車についてのすべてを知っています!を除いて...車についてのすべて。あなたの夢の車がV12エンジンを持っていることを非常によく知ることができますが、あなたはそれが実際に何を意味するのか分かりません。

あなたは自動車整備士ではありません、本当に-あなたは自動車愛好家です。あなたは車がどのように学ぶまで働く、あなたが愛好家のままになります。

今、あなたに聞いてみましょう。どのように機能し$.fn.textますか?そして、どう$.fnですか?彼らは本当にどういう意味ですか?$(something)物を含む巨大な物をどのように返しますか?その物は正確には何ですか?理論的にも、少なくとも少しは機能を複製できますか?jQueryなしで対処できますか?

「ネイティブのJavaScriptは難しい」と言うのは...偽です。何よりも、言語としてのJavaScript は、主にjQueryが抽象化するDOMとは何の関係もないためです。2つ目は、DOMについて少し学習すれば、最も一般的なクロスブラウザバグを既に巡回できるからです。しかし、ほんの少しの秘密-最初はすべてが難しい。ロングディビジョンは5年生のでした。

この答えの2番目の例えとして、jQueryはJavaScript-DOM(JavaScriptではなく、DOMのみ)Array.prototype.forEachに対するものforです。ケースの99%で機能します。そしてそれはうまく機能します。ただし、カバーされていない1%については、実用的である場合にのみ、ループの使用方法を知る必要がありますfor。この全体の回答は、技術的な側面(たとえば、ライブラリのサイズ、およびMichael Dorrantの回答で説明されている他のいくつかの側面)でさえも、質問の「純粋」な側面に基づいています。私はJavaScriptが大好きで、人々が単に「あの馬鹿なjavascriptians」と言って、派手な白い手袋を振ってさりげなくそれを捨てているように見えるとき、それは道徳に落ちます。

あなたが常にJavaScriptの愛好家であるという事実を受け入れることができるなら、私はあなたを止めるために誰ですか?ただし、JavaScriptプログラマになりたい場合は、少なくともjQuery(または他のライブラリ)を使用するかライブラリを使用しないかを選択するための知識が必要です。DOMを学んでください。使い方を学びましょう。独自の小さなライブラリまたはヘルパー関数のコレクションを作成します。そして、DOMの知識があり、jQueryの使用を選択したら、godspeedです。怠azineは一生懸命働いた人に与えられます。


15
長い分割はまだ難しいです!
レイノス

13
@anonymousDownvoter祈りましょう。それはあなたが菜食主義者だからですか?ステーキを豆腐バーガーに変えることはできますが、「偉大な豆腐バーガー」のようなものがあると正直に言うことはできません
-Zirak

10
+1「$(何か)は、ものを含む巨大なものをどのように返しますか?このものは正確には何ですか?」ハァッ!
ThinkingStiff

3
また、@ Mikeは犯罪者です。これは純粋な!@#$ ingの天才であるため、回答済みのステータスにはなりません。
エリックReppen

5
投稿の「グレートステーキ」は自発的なタイプミスであり、編集しないでください。必要な場合は、参照してください。このメタ議論をそれについて
GNAT

12

私が知っている理由:

  1. 必要性が極めて少ない場合は、1回のonclickを言います。

  2. ダウンロード速度が重要であり、jQueryライブラリが大きすぎる場合、およびそれを置き換えるために多くの(カスタム)コードを記述する必要はありません。

  3. 他の技術と統合する場合、生のjsの方が良い場合があります。

  4. すでに確立されたパターンでjsで記述されたレガシーシステム(「プロダクション」とも呼ばれる)で作業している場合。


13
#2が実際に実際にどのくらいの頻度で判明するのだろうか。キャッシュされた可能性のある92Kのダウンロードを保存しますが、より多くの定型的なJSコードを書くことになります。
アダムラキス

4
私はそれについて知りません。機能のサブセットのライブラリ全体を含めるのではなく、JSを必要なものに保つことができます。
ライアンキナル

4
@Ryan Kinal-Adam Rackisには良い点があります。GoogleのAPIを使用してJqueryをロードすると、ユーザーが既に取得した可能性のある場所からロードできます。
ベンデモット

#4に同意しません。レガシーコードが恐ろしく、チームの全員が同意し、jQueryを追加して将来のコードで使用することをお勧めします。
シーフマスター

7

jQueryは単なるフレームワークであり、JavaScriptで記述されたツールのセットです。そのツールセットを使用することで、JavaScriptを引き続き使用できます。jQueryが提供するツールを使用してJavaScriptを記述することを好む人もいれば、そうでない人もいれば、他のツールセットを選択する人もいます。

jQueryを使用せずに「純粋な」JavaScriptを記述したい理由はいくつかあります。

  • 追加のjQueryファイルを含めることなく、ページの読み込みが速くなります
  • 一部のフレームワークはjQueryと互換性がない可能性があります
  • 記述されているコードは、jQueryが支援することは何もしません
  • コードは他の人が使用するために作成されており、依存関係としてjQueryを要求すると共有がより困難になります
  • コード作成者はjQueryが提供する以上の制御を望んでいます

5

jQueryは、ライブラリまたはフレームワークと同様に、バグの別のレイヤーを追加します。私はそれが大好きですが、私のコードではなくjQueryコアにあることが判明したバグを探している日もありません(まれなことですが、それほど珍しいことではありません)。

それ以外は、それを使用しない他の理由は見つかりません:

  • オーバーヘッドは最小限です。特に、ホストされているGoogleバージョンを使用する場合は、
  • 経験の浅いJavascript開発者がよりクリーンで効率的なコードを書くのに役立ちます。
  • それは主にクロスプラットフォームであり、古いブラウザに対処しなければならないときに命を救うことができます。
  • プラグインの巨大なギャラリーは、非常に短い時間でプロトタイプを作成するのに役立ちます。
  • DOMは理にかなっています
  • 何とか何とか何とか...

ただし、Javascriptの知識の代替として使用しないでください。純粋なJavascriptでそれを行う方法がわからない場合は、最初はライブラリを使用してもかまいませんが、長期的には費用を支払うことになります。

もちろん、IE6との長年の致命的な戦闘に拘束されており、ピカピカの新しいおもちゃを好んで古い学校のトリックを簡単に手放すことはできません。


2
jQueryプラグインを使用しますか?それらのほとんどは恐ろしくバグが多く、遅い、悪いコードでいっぱいではありませんか?
レイノス

@Raynos The huge gallery of plugins help me write prototypes in very short times...単なるプロトタイプです。可能な限り、本番コードではそれらを避けます。あり、いくつかのコースの優れたコードとプラグインは、しかし、あなたは彼らのために非常に懸命に見ている...
ヤニス

プロトタイプとは、一般に「使い捨てであるはずでしたが、現在は生産コードです」という意味です。使い捨てのプロトタイプでそれらを使用する場合は問題ありません。
レイノス

@Raynos Prototypingは使い捨てのプロトタイプだけではありません。P:それだし、後半の応答をどのように-進化プロトタイピングは... Web開発のコアプロセスである
ヤニス

「進化的なプロトタイピング」は、「今、巨大なコーナーをカットし、そうすることで得られるコード負債のすべてのコストをもっと得ることを願っています」と呼ばれます。もちろん、これは、あなたのビジネスが成功するために必要な魔法のような時間の枠内で、コーナーを切り取る場合にのみ有効です。それはローンです。
レイノス

5

ブラウザ環境では、クロスブラウザ正規化ツールが必要です。このようなツールには2つの種類があります

  • ホストオブジェクトを新しいオブジェクトでラップし、ブラウザ間で同じように動作します
  • ホストオブジェクトを拡張してDOM APIを実装します。

通常、これらのユーティリティは次の3つの方法のいずれかで使用できます。

  • 必要なときに必要な場所で、コード全体addClassまたはsetTextコード全体で小さな関数を使用する
  • 独自のクロスブラウザ正規化ライブラリを書く
  • 既存のものを使用します。

正規化のメカニズムが必要です。そうしないと、クロスブラウザーサポートがゼロになります。

既存のものを使用することに関しては、それで問題ありません。私はjQueryを使用しません。個人的に私は現在、独自のライブラリを書いています(DOM-shimは、外部の固有のAPIを公開せずにブラウザを修正します。これにより、ブラウザが適切に機能する単一の標準ブラウザになります)。


3

DOMの抽象化、クロスブラウザー、およびレガシーブラウザーのサポートが必要ない場合は、jQueryなしで簡単に実行できます。

これは、ブラウザー拡張機能、greasemonkeyスクリプト(場合によっては)、数値計算処理、Node.jsまたはその他の非ブラウザー環境向けの開発を行う場合です。


2

ここでの他の回答、特にMichael Durrantの回答に加えて、生のJavaScriptを使用することを時折選択する主な理由は速度だと思います。

最近、私は多くのアニメーションやその他のCPU集中型のタスクに取り組んでいますが、生のJavaScriptはjQueryを使用する場合よりもはるかに高速です。

1つの例はposition: fixed、ユーザーがスクロールしたページの位置に応じて要素の不透明度を変更したい場合です。これにjQueryを使用すると効果が非常に遅くなり、スクロールがぎくしゃくしてフェード効果が台無しになりました。私はまっすぐなJavaScriptを使用するように切り替えましたが、IE <= 8を除くすべてで滑らかになりました。


2

私は自分の答えの前に、率直な正直さを述べる必要があります。jQueryが大好きです。それは私の人生を非常に楽にし、JavaScriptコードをより宣言的にします。

jQueryは多くのことを行います…

はい、あなたがプラグインを追加することができます
はい、あなたは、セレクタを拡張することができます
はい、それはアニメーションを簡素化

しかし、jQueryはすべてを行うわけではありません

jQueryを使用して複数のウィンドウコンテキストで作業しようとしたことがありますか?jQuery 、呼び出されたウィンドウの元のコンテキストwindowdocumentコンテキストを保持するため、異なるウィンドウコンテキストを扱うのが面倒です。

私はあちこちにコードを書いてポップアウト*を作成しましたが、jQueryは私が達成しようとしていることを邪魔するだけです。子ウィンドウにjQueryへの新しい参照を追加すると、多くの場合、どのjQueryコンテキストが使用されているかを判別しにくくなるため、事態が悪化する可能性があります。

*スパム広告ではなく、新しいウィンドウでメールを作成するためのGmailのポップアウトを考えてください

コードを簡単にするときに使用します

jQueryを使用するときは、コードをよりシンプルに、短く、読みやすく、高速にできるときです。

jQueryを使用しないときは、コードを簡単に、短く、読みやすく、または速くすることができない場合です。ロードのタイミングを微調整する必要がある場合は、イベントのオーバーヘッドのためにjQueryを使用したくない場合があります。


2

ご存じのとおり、jQueryは汎用フレームワークであり、多くのメソッドをプロジェクトで使用していません。(そのうちのいくつかは、私はまったく使用していません。)

jQueryまたは他の確立されたフレームワークを使用しない主な理由は2つあります。

1.プロジェクトは、そのようなフレームワークを使用するほど大きくも複雑でもありません。 この場合、コーダーはJavaScriptの経験と知識に基づいて情報に基づいた決定を下します。これにより、彼はページの重みを減らし、コードをより詳細に制御できるようになります。

2.コーダーは独自のフレームワーク開発します私は自分の会社で独自のJavaScriptフレームワークを持つプロジェクトを見てきました。引用する理由は、jQueryを使用していて、修正するバグがある場合、次のバージョンまで待たなければならないからです。追加する機能がある場合はまた、彼らは(彼らが使用した例与えたそれのためのjQueryのチームに依頼する必要があるかさえ、それはプラグインは良いアイデアではありません作るのにプラグインを追加し.live、その中で同じようなことを正式にJQueryに追加される前のフレームワーク)。独自のフレームワークを使用すると、コードをより詳細に制御できます。欠点は、ブラウザの互換性の問題などに関して車輪を再発明する必要があることです。さらに、開発プロセスが適切でない場合、フレームワークは膨張し、それを維持するための時間を増やすだけです。


0

マイク

一部のライブラリの使用に対するヘッジは、何らかのインフラストラクチャ/ライブラリソリューションに依存して何らかのタスクを実行しているためだと思います。

しかし、長期的には言語がライブラリのように出入りすることに注意してください。

それで、多分それは一時的なスコープです。たぶん、人々はそこにはないかもしれないライブラリーに投資することをためらう-あるいは、長い目で見ればそれと同じくらいの勢いがある。

私自身?特にJQueryを使用することに異議はありません。また、Box2d.jsまたはthree.jsを見て、短期的な保存期間であっても、提供する果物を逃すよりもむしろそれらを採用したいと考えています。

マイクの一番下の行は、選択したライブラリの保存期間にリスクがあり、javascriptコミュニティの一部は、ライブラリまたはプロジェクトが終了するために損失を経験し、ちょうど言ったかもしれないと思います-二度と。


0

主な問題は、ますます多くの人々(大多数ですか?)がJavaScriptでのコーディング方法を知らなくなっていることです。jQueryが何かを実行できない場合、実行できません。

単純なJavaScriptの例が手に入りにくくなっています。jQueryに対して何もありません。それは素晴らしいフレームワークです。私はそこから多くの良いアイデアを得ましたが、人々は最初にJavaScriptを学び、次にフレームワークを学ぶべきです。私は自分のフレームワークがより柔軟でニーズに合っていることを個人的に感じています。はい、時々車輪を再発明しますが、全体的な制御とバグ修正の制御を持つことは、JavaScriptを学習するためにあなたの仕事を喜んで提供する大きな恩恵です。

それだけでなく。バニラJavaScriptを知っていると、フレームワークベースの実装を待つ代わりに、新しい機能を試したり、実験したりするのがずっと楽しくなります。また、jQueryは主にDOMライブラリであるため、jQueryを非難していませんが、大規模プロジェクトで拡張するのは面倒な場合があります。他のフレームワークはこれでより良い仕事をします。プロトタイプが思い浮かびます。

要するに、それは素晴らしいフレームワークですが、すべての人々がそうすることを目的としているわけではありません。


2
あなたの答えは、それが暴言ではなく、より詳細に焦点を合わせていれば、より強力になります。

この投稿は読みにくい(テキストの壁)。ですが、あなたは気編集をより良い形にそれをINGの?
ブヨ

0

言及されていない2つの理由を追加できます。

  1. 多くの場合、新しいテクノロジーを採用するときは、高レベルの構造に進む前に低レベルの構造から始めます。私は主にC ++ / C#開発者ですが、しばらく前にHTML / CSS / JavaScriptをいじり始めたとき、最初にテクノロジー(つまり、JavaScript言語自体)これらのフレームワークはその上に構築されます。

    • そうは言っても、jQueryを発見したので、1〜2行のコードでjQueryができることを手作業でコーディングに戻りたくありません。
  2. これがどれほど一般的かはわかりませんが、次のフレームワーク/テクノロジー/言語を見ると、最初の応答は「学ぶべき別のAPIではない」という人が多いようです。彼らはjQueryがどれほど簡単かは気にしませんが、単にjQueryが彼らの間に立ちはだかり、「真の試行錯誤」メソッドを使用して作業を提供していると見なしています。これは、BoostライブラリまたはいずれかのSTLの使用を拒否し、ほぼすべてにmallocを使用し続ける人々と同じカテゴリーです。なぜjQueryよりも純粋なJavaScriptを選ぶのかと尋ねましたが、実際には、jQueryを評価することをほとんど拒否しており、実際の開発のペースに完全に満足しているため、実際には選択しませんでした。


1
jQueryは必要のない恐ろしい抽象化レイヤーなので、人々はjQueryよりも純粋なJavaScriptを選択します。
レイノス

もちろん、それはブラウザー間の違いを隠すことであり、それ自体が大きなことです。
コス

@Raynos:私は実際にはWeb技術の専門家ではなく、ほとんど素人ではないため、jQueryを実際に守ることはできません。しかし、私が見てきた小さなことから、それは私にとって非常に良かったです。jQueryは別のツールをツールボックスに追加します。必要なだけ使用できます。必要なときに純粋なJavascriptを書くことを止めることはありませんでした。同時に、書くのに数日かかるコードの数行で達成できることがあるので、もしうまく行けば、それらの2行を使用します。そうでない場合は、自分でロールします。全体が恐ろしいと言うことは、ドライバーを購入して、それが...であると不平を言うようなものです。
DXM12年

...ハンドルに十分な重量がないため、釘を打つ恐ろしいツール
DXM

1
jQueryは必要ありません。ブラウザには、DOMと呼ばれるこのAPIがあり、必要なすべてを実行できます。クロスフィルの問題は、ポリフィルを使用して解決できます。jQueryは、平凡なライブラリであり、レガシーブラウザサポートに対する平凡なソリューションです。
Raynos

-1

jQueryは、JavaScript用に作成されたJavaScript用のライブラリです。アイデアは、すべての困難/退屈なJavaScriptをシンプルにすることで、開発時間を短縮し、スクリプトがクロスブラウザで動作する可能性を高めることです。

jQueryの使用が望ましい理由:

  • 速い
  • 軽量JavaScriptライブラリ
  • CSS 3準拠
  • 多くのブラウザをサポートしています。
  • jQueryフレームワークは拡張可能で、DOM操作、CSS、 Ajax、イベント、アニメーションを処理します。

JavaScriptは言語ですが、jQueryはJavaScriptを使用して記述されたライブラリです。

JavaScriptをjQueryよりも使用する方が好ましい理由は次のとおりです。

  1. ページを使用するたびにjQueryスクリプトライブラリ全体をロードします。それはおしっこ/高速クエリ処理ウェブサイトの欠点です。
  2. jQueryフレームワークが崩壊したり、他のフレームワークと競合することがあります。
  3. 要素を選択してalterを表示するだけの簡単なコードを書いている場合、ネイティブJavaScriptの方がはるかに優れています。
  4. 操作が小さく、JavaScriptの数行のコード内で実行される場合、jQueryを使用するのは良くありません。

これらの理由により、jQueryフレームワークを回避するためにJavaScriptを使用するのが好きです。このようなライブラリに依存するよりもJavaScriptを学ぶ方がはるかに優れています...

それらを拡張したい場合でも、JavaScriptでコードを記述する必要があります。これも大きな話題です。開発者はこれらのライブラリに依存するため、プロジェクトを制御するには、JavaScriptがフレームワークを使用するよりも優れています。


1
「DOM操作を非常にうまく処理します」
シークレット

@Incognitoにこのことを知らせてくれてありがとう。しかし、他のライブラリよりもずっと良い。keyframesandcode.com/resources/javascript/deconstructed
ニランジャンシン

1
リンクはまったく間違っています。シズルを介してpsudo-cssセレクターをサポートするjQueryは、DOMとは関係ありません。
シークレット

よくそれのOK ...でも、私はこのようなものについてあなたから学んだ..あなたが私にこれらのものについて任意のリンクや情報を与えることができます..私は答えを更新しました...
Niranjanシン

yuiblog.com/blog/2006/10/20/video-crockford-domtheoryは良いスタートです。DOMのw3c仕様を読んでください。
シークレット

-4

jQueryを使用する理由は、jQueryがよりシンプルで、簡単で、強力であり、IEを忘れるのに役立つからだと思います。その上、カスタマイズされた機能のために人々はjavascriptを使用します。詳細については、DOCを参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.