jQuery v4.0 ベータ版
(blog.jquery.com)- IE 10 以下のサポートが削除され、Edge Legacy、iOS <11、Firefox <65、Android Browser のサポートも終了
- 複数のバージョンにわたって非推奨(deprecation)となっていた API が削除:
jQuery.cssNumber、jQuery.cssProps、jQuery.isArray、jQuery.parseJSON、jQuery.nodeName、jQuery.isFunction、jQuery.isWindow、jQuery.camelCase、jQuery.type、jQuery.now、jQuery.isNumeric、jQuery.trim、jQuery.fx.interval - jQuery プロトタイプの内部用 Array メソッドだった
push、sort、spliceが削除され、これらのメソッドに依存するプラグインに影響する可能性 focusout、blur、focusin、focus関連のイベント順序における jQuery の従来のオーバーライドが削除され、IE を除くブラウザは現在の W3C 順序であるblur→focusout→focus→focusinに従うjQuery.ajaxが バイナリデータとFormDataをサポートし、従来のように不明なデータ型として扱って文字列に変換していた動作が自動処理に変更dataType: "json"とコールバックが一緒に指定された場合に JSONP リクエストへ自動昇格していたjQuery.ajaxの動作が削除- jQuery のソースが AMD から ES modules に移行し、パッケージングツールが RequireJS から Rollup に変更
- Trusted Types のサポートが追加され、TrustedHTML でラップした HTML を、
require-trusted-types-forCSP ディレクティブに違反せずに jQuery の操作メソッドの入力として使用可能 - ほとんどの非同期スクリプトリクエストが
<script>タグを使用するようになり、インラインスクリプト使用による CSP エラーを避けるように変更 - slim ビルドでは Deferreds と Callbacks が削除され、gzip 基準で 20k bytes 未満となり、通常ビルドより約 8k gzipped bytes 小さい
- IE11 サポートが必要な場合は、slim ビルドではなく main ビルドを使うか、native Promises のポリフィルを追加する構成が推奨される
- 正式リリース前に包括的なアップグレードガイドが公開される予定で、jQuery Migrate plugin が移行支援用として用意される予定
- ベータリリースは jQuery CDN と npm で提供され、サードパーティ CDN はベータをホストせず、4.0.0 正式リリースを後日ホストする予定
1件のコメント
Hacker News の意見
2024年以降も jQuery を動かし続ける力が何なのか気になるなら、WordPress が今なお Web の 1/3 以上を占めており、ほとんどのインストール環境と無数のプラグインが jQuery に大きく依存していることを思い出すべき
廃止予定の API や関数の削除が進むのは良いことで、jQuery は今後も数年間、Web 上で支配的な存在であり続ける可能性が高い
この15年ほど、業界は過度に複雑で派手な JavaScript フレームワークにのめり込んできたが、動的に生成されたフォームに動的バインディングをかけ、エラー状態を処理し、Ajax 呼び出しを数回行う程度が、Web ページの99%に必要な JavaScript のすべてであり、それ以外は過剰なことが多い
業界は React の複雑さから離れ、htmx、Phoenix LiveView、Ruby on Rails Turbo、そして単に jQuery のようなシンプルさへ移っていくことになると思う
すべてのソフトウェアから jQuery を取り除けば、インターネット上のかなりの数の Web サイトが止まるだろう
以前勤めていた会社は、エンタープライズ向け SaaS 製品を数万行の jQuery コードで運用していた
本当に必要にならない限り、最新の JS フレームワークで書き直すことは起きないだろう。大半は10年以上前に特定顧客の要件に合わせて書かれたコードであり、最新フレームワークを使えば採用に役立つという理屈も通らない。会社はフロントエンドエンジニアに7.5万〜9万ドルしか支払っておらず、離職率も低く、現在のエンジニアの大半は5年以上在籍している
何より、現在のスタックはうまく動いており、古くからの顧客も満足している。ソフトウェアエンジニアリングのかなりの部分は、Bay Area や Seattle のようなビッグテックの中心地よりも生活費がはるかに低い都市にある、こうした退屈なビジネスで行われている
派手ではないが、必要としている人があまりに多いので、かなり稼げる
いつか最新トレンドを追うビッグテック系スタートアップの世界から引退するなら、まっとうに稼ぎながら WordPress サイトを作り、毎日午後3時に仕事を切り上げたい
あちこちで自前のイベントディスパッチャを作ってきたが、jQuery はこの部分をきちんとこなしている。今でもほぼイベント処理のためだけに jQuery を使っているが、あまりに便利なので、ほぼすべてのクライアント側プロジェクトに入れている
聞きたかったのは、
$(window).trigger('click')と$(myClassInstance).trigger('myCustomEvent',{data})を同じ API で、非同期リスニングまで扱える軽量ライブラリを知っている人がいるか、ということだったfetch()と CSS セレクタの台頭のおかげで、今では jQuery の残りの部分はなくてもよさそうだが、わざわざ車輪を再発明する必要があるのかと思う。クラスインスタンスがイベントをディスパッチするのはコードスメルだと言う前に、リアクティブフレームワークをゼロから作るには必ず必要になる例えば、私の基本コンポーネントクラスは、自分を含む画面で発生する特定のカスタム resize イベントを購読し、その画面はスクロールされず内部の再配置が必要なコンポーネントにだけイベントを送る。画面クラスは
window.resizeを購読するが、レイアウトが厄介なときだけディスパッチする。すべてのコンポーネントに個別の DOM resize リスナーをwindowに付けるのは筋が通らないHN では jQuery を単なる DOM 選択ライブラリと見なす人が継続的に見られるので驚く
実際には広くサポートされ、非常に安定したツール群であり、DOM 選択だけでなく属性操作、Ajax リクエスト、イベント処理、アニメーション、汎用ユーティリティ関数まで提供している
さらに、jQuery を置き換えるネイティブ機能があったとしても、API が同じくらい流麗とは限らない
サーバー側 HTML の上に少し機能を足すだけでよく、完全な JS UI フレームワークまでは不要な作業なら、jQuery は安定していて信頼でき、ブラウザ間互換のある依存関係として、小さな代償にすぎない
ネイティブ JS には jQuery が持っていたものがすべてあり、たいてい管理が不十分で半端にしか完成していないプラグインの山がないだけだ。そうしたプラグインは普通、自分たちがやろうとしていることだけをやり、それ以外はあまり助けにならない
素のセレクタのほうが冗長ではあるが、まともなコードエディタなら入力速度は同じくらいにしてくれる。議論したいわけではないが、なぜ今でもそれほど多くの人が jQuery を使っているのか、正直よく理解できない
https://youmightnotneedjquery.com/
DOM 選択を少し超えるものが必要になると、その時々で流行している大型 JS フレームワークをすぐ手に取る人が多く、ずっとそうしてきたからだ
ビルドツールと、それに付随する厄介ごとが必要ない。React でもそうできなくはないが、提供される機能は比較対象にならない
多くの人が jQuery の最後の痕跡を積極的に取り除こうとしている世界で、今いったい誰が jQuery で積極的に開発しているのか、本気で気になる
かつて jQuery でやっていたことの大半は、今ではブラウザに入っていて、
querySelectorAllが最も強力な例だと思うawait、asyncより$.ajax()のほうがはるかに単純に感じる慣れようとして小さな個人プロジェクトいくつかでは素の JS も使ってみたが、自分にとっては
$.ajax()で処理するのが筋肉記憶のようにすぐできるやり方だそれに、私が DOM 操作用に書くコードを実際に使う人は20人くらいだと思う。私は UI 担当ではなくバックエンド担当なのだが、やってくれる人がいないのでフロントエンドも書いているだけだ
https://survey.stackoverflow.co/2023/#section-most-popular-t...
個人的には、HTMX はある意味で jQuery の精神的後継者だと思う
新規プロジェクトを jQuery で始めるのは疑問だが、素の JavaScript のやり方よりも jQuery 流で処理することにはるかに慣れている開発者は確かにいる
良い例として levelsio がある: https://twitter.com/levelsio/status/1750175827197567165
自分もそちら側で、今も jQuery を使っている
現在の SaaS は UI コードが多くない拡張機能の https://www.snipcss.com で、次の SaaS は UI がかなりある ChatGPT ベースの Web 自動化拡張機能になる予定だ。どちらも jQuery を使っている
querySelectorAllを使う素の JS に行かない主な理由は、イベントを付ける方法が気に入っていて、特に親に付けて動的に追加された子要素を対象にできること、関数チェーンが良いこと、素の JS よりコードが少なくて済むことだ素晴らしい。ただ私は 4.0 を待ちすぎた結果、いくつかの重要な違いがある独自の jQuery を作ってしまった
アニメーション、トゥイーン、タイムラインは jQuery のカスタムシステムの代わりに素の CSS を使い、単一要素とリストを透過的に扱い、インライン方式を採っている
私も似たものを実装していたが、インラインイベントと標準の配列メソッド以上のものを含んでいる [0]
surreal と関連プロジェクト css-scope-inline で、振る舞いの局所性(locality of behavior)がどのように実装されているのかを説明する記事やスクリーンキャストがあるとうれしい。長期的にメンテし、自分のプロジェクトにも入れられるよう理解したい
Web に対する哲学についても話してみたい。いくつかは考えがかなり合いそうだ
[0] https://hyperspace.so/All.js.png
2008年ごろ、ジュニアだった頃に戻ったような気分だ。プロジェクトに jQuery を追加しようとテックリードと激しく議論したことがあった
彼の論理は、縮小後のライブラリサイズである 40KB がページ読み込み時間にとって大きすぎる負担だというものだった
それから Ajax 呼び出しを自前で書き、複数ブラウザ対応をテストするのに丸一週間を費やしたが、結局 Internet Explorer 5 で動かすことには失敗した
あの頃の jQuery は本当に多くの厄介ごとを解決してくれたし、最終的に彼はプロジェクトにライブラリを追加した
jQuery チーム、よくやった。jQuery は永遠に好きでいそうだ
ただ 仕事を終わらせてくれるツールだ
ブラウザの DOM 選択サポートがずっと良くなった今、2024年にどうして jQuery を使うのか気になる
けなすつもりはなく、今も開発が続いているのは素晴らしいと思うが、ユースケースが何なのか混乱している
document.querySelector()がサポートしていない、かなり便利なセレクタがいくつもある例えば
:selected、:checkedのようなものがあり、ほかにもいくつかあって実際に何度か遭遇した全体として DOM API は、良い API 設計に対する私の感覚の大半に反している。jQuery API にも不満はあるが、はるかにましで、読み書きの流れがずっと自然だ
約15年ものの古い .NET Web アプリを保守していて、jQuery に戻った。Web Components のようなもっとモダンなもので全体をリファクタリングしたり書き直したりする夢は良いが、実際には絶対にやらないだろう
社内スタッフ20人だけが見るページなら、jQuery は十分軽く、CDN からそのまま読み込めて、トランスパイルは一切不要で、基本的に必要なことを全部こなしてくれる
参考までに、私たちは ローコードプラットフォーム全体のドラッグ&ドロップエディタを jQuery で作った
エディタ、すべてのコントロール、つまり UI コンポーネントが含まれ、言うまでもなく最終的に生成されるコードも素の jQuery だ
ただ、大企業の役員たちは営業エンジニアに、なぜ React や Angular などではないのかとよく尋ねる
だから今でも jQuery がこれほど関係性を持っていると読めて本当にうれしいし、共同創業者兼 CTO がスタックを移行しようとせず、この選択を支持し続けてくれていることをうれしく思う
jQueryが初めて登場した頃を覚えている
同僚を説得しようと「Don’t Fear the $」という社内発表を開き、jQueryが提供するメリットを説明した
jQueryの全盛期、私たちがMootoolsの代替として使っていた頃を覚えている
多くの人がReactからHTMXへ移っているので、一周回ってWebがただの素のjQueryも使う姿を見ることになるかもしれない
アクセシビリティ、モバイル対応、リアルタイム更新、ビジュアライゼーション、さらにいくつかのPWA機能まで備えたモダンなアプリをjQueryだけで作ると考えると、本当に不快に聞こえる
HTMXの過熱も現実にぶつかる時を待っているところだ。DSLのような偽の属性でアプリをプログラミングするやり方には、すぐ飽きそうだ
小さく、非常に特化したJSライブラリだ
$().load()みたいだ