[解決済み] React.jsにおけるdeclarativeとimperativeの違いとは?
質問
最近、FacebookのJavaScriptライブラリであるReact.jsの機能や使い方についてよく勉強しています。他のJavaScriptの世界との違いについて話すとき、しばしば2つのプログラミングスタイル
declarative
と
imperative
が挙げられています。
両者の違いは何ですか?
どのように解決するのですか?
reactのような宣言的なスタイルでは、アプリケーションのフローや状態を、"このように見えるはずだ、と言って制御することができます。一方、命令型は、「こうでなければならない」とアプリケーションを制御することができます。
宣言型の利点は、状態を表現するための実装の詳細に煩わされないことです。アプリケーションのビューの一貫性を保つための組織的な要素を委任しているので、状態についてだけ心配すればいいのです。
フレームワークのメタファーである執事がいると想像してください。そして、あなたは夕食を作りたいと思っています。命令型の世界では、夕食の作り方をステップバイステップで伝えることになります。このような指示をしなければならないのです。
Go to the kitchen
Open fridge
Remove chicken from fridge
...
Bring food to the table
宣言的な世界では、単に欲しいものを記述するだけです。
I want dinner with chicken.
もしあなたの執事がチキンの作り方を知らないなら、宣言的なスタイルで操作することはできません。Backboneがあるタスクを行うために自分自身を変異させる方法を知らないなら、そのタスクを行うように指示することはできないのと同じです。Reactが宣言型になれるのは、例えば「チキンの作り方」を知っているからです。例えば、チキンの作り方を知っているBackboneと比較して。
状態を記述できることで、バグの発生する表面積が劇的に減るのはメリットです。その反面、柔軟性に欠けるかもしれませんが どのように の柔軟性が低下する可能性があります。なぜなら、状態を実装する方法を委譲したり抽象化したりしているからです。
関連
-
JavaScriptのクロージャの説明
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] クロージャ」と「ラムダ」の違いは何ですか?
-
[解決済み] npxとnpmの違い?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
[解決済み] プログラミングにおける宣言型パラダイムと命令型パラダイムの違いは何ですか?
-
[解決済み】jQueryのクリックイベントが複数回発生する件