[解決済み] ReactのAPIは小さいのに、なぜファイルサイズがこんなに大きいのか?
疑問点
以下は数字です。
- min+gzip 26k
- gzip 90k
- オリジナル 450+k
そして、Reactはドキュメントにあまり特徴が書かれていません。なぜこんなに大きいのでしょうか?
軽量DOMの実装のような気がしている。でも、確かめたいんです。
どうすれば解決するのか?
React はかなり多くのことをします! React の最大の目立たない部分は、おそらくイベント システムです。React は独自のイベント ディスパッチとバブリングを実装するだけでなく、ブラウザ間で共通のイベントを正規化して、それについてそれほど心配する必要がないようにしています。たとえば
SelectEventPlugin
は組み込みのイベント "プラグイン"であり、このプラグインは
onSelect
イベントを提供するプラグインです。
は 仮想 DOM の実装にもそれなりのコード量が必要です。多くの労力がパフォーマンスの最適化に費やされており、そのため最小化されていないバージョンには ReactPerf これはレンダリング性能を測定するためのツールです。DOM を更新する際に、React は入力の選択を維持したり、現在のスクロール位置を同じに保つなど、便利なこともしてくれます。
Reactは他にもいくつかのトリックを持っています。最もクールなものの1つは、ブラウザ環境がなくてもコンポーネントをHTML文字列にレンダリングすることを完全にサポートしているので、JSがロードされる前でも動作するページを送信することができることです。
Reactは何と比較しているのですか?
react-15.0.2.min.js
は
43k (gzipped)
であるのに対し、jQueryは33k
ember-2.6.0.prod.js
は
363k (also gzipped)
. もちろん、これらのフレームワークはまったく同じことをするわけではありませんが、多くの重複があるので、この比較は妥当だと思います。
ダウンロード サイズについて心配しているのであれば、JS コードがそれに寄与していることをあまり気にしないことにします。これは、私が今、Stack Overflow ページの右側に表示されている広告です。
そのダウンロード サイズは 95k -- 私なら、そのような画像をページに含めることは考えません。なぜなら (たとえ私がパフォーマンスを心配していたとしても) 通常、パフォーマンスに関する他の多くの修正すべき事柄があり、そちらの方がより有利だからです。
要するに、私はReactがそれほど大きなものだとは思っていません。React のコードが小さいはずだという理由として、React の小さな API を挙げていますが、より良い質問は、「React の API は、それがあなたのために行うすべてのことを考えると、なぜそれほど単純であることができるのか」でしょう。
...でも、これはまったく別の質問です :) あなたの質問に答えられたらいいのですが、もし答えられなかったら、喜んで拡大します。
関連
-
[解決済み] ReactJS giving error Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み] react nativeで関数だらけのヘルパーファイルを作成する方法は?
-
[解決済み] react jsでウィンドウを開くイベントを処理するにはどうすればよいですか?
-
[解決済み] componentWillReceiveProps は名称が変更されました。
-
[解決済み] sh: react-scripts: npm start の実行後にコマンドが見つからない。
-
[解決済み] react.jsで複数のモジュールをエクスポートする
-
[解決済み] Reactプロジェクトに.envファイルを追加する
-
[解決済み】axiosのすべてのリクエストにAuthorizationヘッダーを添付する
-
[解決済み】React 16のFragmentは、なぜコンテナDivよりも優れているのでしょうか?
-
[解決済み] React JSによる無限スクロール
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jestの `beforeEach` グローバルは何のためにあるのですか?
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] Angular 2の*ngForのReactでの同等品
-
[解決済み] 'Proptypes'が定義されていない
-
[解決済み] React JS Jestで「SyntaxError: 予期しないトークン"
-
[解決済み] React TypeScriptで作業しているときに、Jestが予期しないトークンに遭遇した
-
[解決済み] axios-mock-adapter onGet mock data not effective.
-
[解決済み] Static HTML elements with event handlers require a role." を修正するにはどうすればよいですか?
-
[解決済み] Error: yarn start - エラー コマンド "start" が見つかりません。
-
[解決済み] ESLintとTSLintの違い【クローズド】について