BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Facebookの React JavaScript ユーザーインターフェースライブラリは、様々な批判を受けている

Facebookの React JavaScript ユーザーインターフェースライブラリは、様々な批判を受けている

原文(投稿日:2013/06/03)へのリンク

FacebookがオープンソースしたReactは、Instagram ウェブサイトFacebookのウェブサイトの部分と同様に構築するために使用され、応答の良いユーザインタフェースを構築するためのJavaScriptライブラリである。AngularJS, MeteorJS、そしてPolymerに実装されたModel-Driven Viewsのようなフレームワークの最近の傾向に従って、Reactは、データモデル上にユーザインタフェースを宣言的に指定するという考えに基づいており、ユーザは自動的に基にあるデータと同期を保つ。前述のフレームワークとは異なり、ReactはHTMLではなくJavaScriptを使って、それらのユーザインタフェースを構築する。この設計上の決定理由として柔軟性を挙げている。

それには依存していないが、Reactのウェブサイトにあるサンプルコードは、すべてJSX、XMLリテラル付きJavaScriptの拡張に依存している。例えば、以下はJSXを使ってReactで表した典型的な "Hello World"の例だ。

/** @jsx React.DOM */
var HelloMessage = React.createClass({
  render: function() {
    return 
{'Hello ' + this.props.name}
; } }); React.renderComponent(, mountNode);

埋め込まれたXMLは、プリコンパイルの段階で通常のJavaScript DOM APIコールに変換される。

リリース以来、ライブラリは広く批判されている。その批判は一般的に2つのカテゴリに分類される。ビューとロジックの混在、そして既存のフレームワークに比べてのコードの冗長性である。

(見かけの)ビューとコントローラの混在

Reddit ユーザーの 'rhysbrettbowen'が書いている:

私はJSXが必要ではないことを理解しましたが、私たちは非常に長い時間をかけてHTMLからロジックを取り除いたので、今、我々は前に進みたい、そうではなくロジックにHTMLを入れたいのか?

これの最大の問題は、それがビジネスロジックからHTMLを分離するのをうまくやっていないことです。それらが別れているなら、デザイナーにHTML /スタイルの仕事をさせることができ、プログラマーはその代わりに、コードを開発し、単にテンプレートで動くフックを提供することができます。

これと同じようなコメントへの回答で、FacebookのReactチームのPeter Hunt氏が ブログの記事で説明している。Reactはアプリケーションのビューとロジックをミックスしようとしては全くない

我々皆は、HTMLとPHPが混在した時代を覚えています。コードは、メンテが本当に大変で、セキュリティは付け足しだった。我々は、あのような時代に戻りたくない。/p>

その時代以来、エンジニアがこの罪を犯さないように、言語をテンプレートクライアント側とサーバー側でテンプレート化する言語を開発してきました。しかし、これらのテンプレート言語はコストがかかります:それらはユーザーインターフェイスの構築を難しくします。テーブル中の行の色を変えるような単純なことをするのに、多くの言語で輪を飛び抜けるようなことが必要です。

私たちが代わりにやるべきことは、ユーザーインタフェースはますます複雑になってきていることと、我々は様々な規模でユーザインタフェースを構築するために本物のプログラミング言語が(その表現力のすべてを持つ)必要があることを受け入れることです。

React はこのアイデアを受け入れているライブラリです。React はまだ関心の分離を奨励しています:コンポーネントは伝統的なMVCアプリケーションの 「ビュー」の役割のみを果たします。しかし、過剰に単純化したテンプレート言語ではなく、JavaScriptを使用して抽象を構築し、コードを再利用します。

既存のフレームワークと比較された例の冗長性

React発表の後、簡潔にVlad Yazhbin氏が Reactチュートリアルコードを AngularJSに翻訳したものを掲載したが、元のReact コードよりどのくらい簡潔になったかを示している。しかし、人々が指摘しているのは、 その比較が完全に公平とは、言えないかもしれないと、いうことである。

それにもかかわらず、Facebookが開発したライブラリ以上のものをオープンソースした彼らの努力は、コミュニティに感謝されている。開発ライブラリのソースより多くを開くために、Facebookの努力は開発者コミュニティによって評価されています。Facebookによる以前の知名度の高いオープンソースのリリースには、Hiphop PHP コンパイラTornado、もともと FriendFeedを動かすために作られた、リアルタイムアプリケーションを構築するための効率的な非同期のPython Webフレームワークが含まれている。

Reactは、githubで入手でき様々な開発と本番用ビルドでダウンロードできる。

この記事に星をつける

おすすめ度
スタイル

BT