Reactのせいで忘れていたこと(あるいは知らなかったこと)
(joshcollinsworth.com)- ユーザーインターフェース構築のために広く使われているJavaScriptライブラリ React に対する批判的な検討と代替案の提案。
- React は 時代遅れ だと批判され、パフォーマンスと適応性に欠けると指摘。
- 著者はReactのエコシステムが不必要に大きいと主張し、React hooks は今や時代遅れだと述べている。
- フロントエンドでレンダリングとスケーリングに集中する必要はないという主張。
- サーバーサイドレンダリング はもはや独自性のあるものではなく、双方向データバインディングは悪い考えではないという主張。
- スタイリング はReactよりシンプルであり、他のフレームワークも学ぶのは難しくないという主張。
- Reactの代替は単に「新しくて目新しい」だけではなく、成熟していてより優れたパフォーマンスを提供するという主張。
- Svelte, Vue, Solid, Fresh, Astro, Preact, Qwik など他のフレームワークを試してみることを推奨。
- 著者個人のお気に入りは Svelte で、Reactより学びやすく、パフォーマンスも高いと主張。
- Svelte はコンパイラであり、使われていないコードはビルド時に取り除かれるため、より小さなバンドルを生成。
- Svelteのメタフレームワーク SvelteKit は多様で強力であり、静的配信、サーバーレンダリング、エッジデプロイが可能。
- Vue はReactより優れたパフォーマンスと、よりUI中心のアプローチを提供し、JSXより標準的なHTMLに近いテンプレート言語を使う。
- Solid はReactをより高性能にしたような存在で、複雑さ、パフォーマンス問題、ボイラープレートを取り除く。独自のメタフレームワーク SolidStart も提供。
- Fresh はDeno上に構築されたサーバーレンダリングのフロントエンドフレームワークで、アイランドアーキテクチャを採用。最小限のJavaScriptと高速な動的コンテンツ読み込みを提供。
- Astro は高性能な静的サイトジェネレーターで、動的なサーバーサイド機能も備える。デフォルトではJavaScriptをまったく使わず、さまざまなフロントエンドフレームワークと互換性がある。
- Preact はReactをよりスリムで高速にした版で、Reactにはないいくつかの優れた機能も備えている。
- Qwik は新しいアプローチで、サーバーレンダリングReactに似たコードを提供し、多くのインタラクションがあるプロジェクトに適した選択肢。
- Lit, Stencil, Polymer のようなWeb Componentsライブラリは、同じコンポーネントを複数の環境で再利用したい、またはフレームワーク変更に備えたいプロジェクトに推奨。
- 著者は、技術業界がReactから新しいものへと技術採用の次の飛躍を遂げられる可能性を示唆している。
21件のコメント
この記事は、無礼な後輩が「先輩〜 もう大したことないんだから引退してくださいよ?」と言っているような内容に見えて、ばかばかしい。
記事について少し過熱しているようです。
サイト利用方法 のコメント投稿項目をご確認ください。
親切で落ち着いた言葉で話してください。
投稿者を直接攻撃しないでください。
反論がある場合は、その内容だけを書いてください。
個人的には、単にJSのような言語がサーバー開発言語として使われるのはあまり好きではありません。
最近はTSベースのものも多いですが、結局できあがるものはJSですし……。Pythonもそうですし、JavaScriptもそうですが、言語という観点では本当に好みではないのに、利便性のためかよく使われていますね。
言語の民主化のような感じですね
Vercel が血と汗を流して作り上げたものなのに、あまりにも当たり前で大したことではないかのように受け取られている気がして、あまり良くないですね。
学校に通っていたころ、文法エラーすら拾ってくれないエディタで地獄のようなサーブレットを書いていた記憶を思い出すと、ReactであれSvelteであれ、あらゆるものに感謝したくなりますね……
あれこれ使ってみるとReactの長所と短所が見えてきますが、Reactが良い、JSXが強みだ、hooksに対する否定的な意見に対して否定的であるのは、盲目的な宗教のような感じですね
JSXではなく「表現力」に強みがあると書いたのですね……。hooks については、実際に原文を読んでみると、hooks パターンそのものを批判していたのではなく、単にそれがもはや React だけの強みではない、という程度のことしか書いていなかったと確認しました。この程度なら同意できます。あのような訳になっていたので、私が誤解していました。
それで、コメントを書かれた方が把握された「長所」は何なのか、具体的に書いていただけますか?
ライブラリやフレームワークに、まさか長所だけあって短所はないと思っているわけではないですよね? 使っていてReactの欠点のようなものを感じたことはありませんか? わざわざ欠点を書いてほしいとおっしゃるということは、一度も感じたことがなかったようですね? 長所短所というのは、長所もあるという意味だということはご存じですよね? 長所も多いですが短所も多いです。
そのうち昨日読んだものなのですが、リンクは分かりません。サーバーコンポーネントでは、サーバーコンポーネントの外でしかcontextを使えないそうです。そのためjs-in-cssを使えないそうですね。私が直接やってみたわけではないので、本当に欠点だとは言えませんね(笑)。
フックですか? 私は本当に画期的なアイデアの提供者だと思います。ですが今はですね(笑)、Reactよりもっと賢くて使いやすいシグナルがあります。本文にもあります。
はい(笑)、よく聞きました
こんな中でも抜けている angular、うっうっ
まったく同意できませんね。JSXのようなものは、HTMLより表現力に強みがあるからあえて使うのでしょうし、
双方向データバインディングがずっと悪い考えだったという一般的な意見が、なぜ急に覆ったのかも疑問ですし、
不必要に大きなエコシステムとはまたどういう意味なのでしょうか? そして hooks が時代遅れだと……。
個人的には、実際にプログラマーが書いた文章なのかどうかさえ疑問ですね。
かなり納得できる内容が多い気がします。今でもReactは使っていますが……
技術的にどのようなトレードオフがあるのかを具体的に説明するのではなく、単に性能が低いと主張するのには無理があるように見えます。たとえばReact以外のアイランド実装では、優先順位ベースのローディングのようなことができないのですから。
電子政府フレームワークに別のものが登場しない限り……Reactは国内で強力であり続けるしかないでしょう。
そうですね。Reactの代替として、あまりにも多くのライブラリを提示していますね。
包括的にすべてを考慮したときに、Reactより優れている点をアピールすべきではないかと思います。
Vue や Nuxt は本当に良いのに、国内では立場が狭くて残念です。Svelte は……立場を語れないような状態で(泣)……
1万回うなずける正論
Hacker Newsの意見
filter、map、reduceなどの言語機能を使うことは、人によっては回避策よりも便利だと受け取られている。useMemoやuseCallbackのような機能を使わせることに疑問を感じている。