1. ホーム
  2. javascript

[解決済み] React.jsにおけるdeclarativeとimperativeの違いとは?

2022-05-14 06:56:12

質問

最近、FacebookのJavaScriptライブラリであるReact.jsの機能や使い方についてよく勉強しています。他のJavaScriptの世界との違いについて話すとき、しばしば2つのプログラミングスタイル declarativeimperative が挙げられています。

両者の違いは何ですか?

どのように解決するのですか?

reactのような宣言的なスタイルでは、アプリケーションのフローや状態を、"このように見えるはずだ、と言って制御することができます。一方、命令型は、「こうでなければならない」とアプリケーションを制御することができます。

宣言型の利点は、状態を表現するための実装の詳細に煩わされないことです。アプリケーションのビューの一貫性を保つための組織的な要素を委任しているので、状態についてだけ心配すればいいのです。

フレームワークのメタファーである執事がいると想像してください。そして、あなたは夕食を作りたいと思っています。命令型の世界では、夕食の作り方をステップバイステップで伝えることになります。このような指示をしなければならないのです。

Go to the kitchen
Open fridge
Remove chicken from fridge
...
Bring food to the table

宣言的な世界では、単に欲しいものを記述するだけです。

I want dinner with chicken.

もしあなたの執事がチキンの作り方を知らないなら、宣言的なスタイルで操作することはできません。Backboneがあるタスクを行うために自分自身を変異させる方法を知らないなら、そのタスクを行うように指示することはできないのと同じです。Reactが宣言型になれるのは、例えば「チキンの作り方」を知っているからです。例えば、チキンの作り方を知っているBackboneと比較して。

状態を記述できることで、バグの発生する表面積が劇的に減るのはメリットです。その反面、柔軟性に欠けるかもしれませんが どのように の柔軟性が低下する可能性があります。なぜなら、状態を実装する方法を委譲したり抽象化したりしているからです。