2

RactiveJS は JSX と互換性がありますか?

マークアップの一部は互換性がないと推測しています。厳密な型付けと、JavaScript ソースでテンプレートをきれいに記述できる点が気に入っています。多分これは悪い設計と見なされますか?

4

1 に答える 1

14

いいえ。React.js と Ractive.js には多くの類似点があります (たとえば、どちらもメモリ内に軽量の仮想 DOM を構築することで動作します) が、1 つの大きな違いがあります。React はテンプレートの概念を完全に拒否します。

つまり、JSXはテンプレート言語ではなく、テンプレート言語のように見えるだけです。Reactで、こんなのあったら…

<h1>Hello world!</h1>

... JSX プリプロセッサによって次のようなものに変換されます。

React.DOM.h1(null, 'Hello world!');

つまり、JSX はテンプレートではなく関数を記述します。対照的に、Ractive では、Mustache テンプレートは JSON として転送できるツリー状の構造に解析されます。

さて、この例の場合、元の文字列がどのプロセスを通過するかは問題ではありません。最終的<h1>にはブラウザのどこかで要素として処理されます。しかし、React ではコンポーネントの基本的な構造を変更できるものの、Ractive では意味を持たないthis.stateandを参照する任意の JavaScript を導入し始めると、さらに難しくなります。this.props

Ractive は将来、Mustache 以外のテンプレート言語をサポートする可能性がありますが、JSX はそのような異なるアプローチと設計目標を持っているため、その 1 つになる可能性は低いです。

ただし、ここには関連する問題があり、1 つのファイルでコンポーネントを完全に記述することができます。そこでは進行中の作業がいくつかあります。最も可能性の高いシナリオは、テンプレートを .js ファイルに書き込むのではなく、(HTML 内で JavaScript と CSS を使用できるため) .html ファイルでコンポーネントを記述できるようになることです。

于 2013-12-25T05:14:14.083 に答える