1

私はこのプラグインを使用する場合:多くとhttps://github.com/jmurphyau/ember-truth-helpersエンバー2、だけではなく、エンバーのデフォルトの方法の残り火-真理ヘルパーのようなプラグインを使用してパフォーマンス

を、のは言わせ、

{{#if (eq model.beautiful true) }}

または

{{#if (or (eq model.beautiful true) (eq model.crazy true)) }}

Emberはバックグラウンドで何を作成していますか?同じjavascriptは、次のような計算されたプロパティの作品です:

isBeautiful: Ember.computed.equal('model.beautiful', true);など?

私に30個のcomputedProperty(Emberマクロとカスタムオブジェクト)がある場合、このプラグインまたはEmberのデフォルトの方法を使用する方がよいでしょうか?

ため、私はいくつかのテンプレートで、私はこの多くの多くの時間のようなものを持つことができます思ったんだけど!:

{{#if (or (eq model.beautiful true) (eq model.crazy true)) }}

だけではなく、この1:

{{#if isBeautifulOrCrazy }}

は何ですかパフォーマンス面で最高のソリューション?

答えて

1

私はユーザーに違いがあるとは思わないと思います。私の選択は、できるだけコードを少なくし、メンテナンス性を向上させることです。あなたの場合、同じ行の3つ以上がある場合{{#if (or (eq model.beautiful true) (eq model.crazy true)) }}、私は計算されたプロパティをお勧めします。それはテンプレートをはるかに単純化し、コントローラーをあまり大きくしません。いくつかのテンプレートで同じ正確な線がある場合は、モデルに計算されたプロパティを作成することができますので、{{#if model.isBeautifulOrCrazy }}になります。またはテンプレートヘルパー。

Emberはバックグラウンドで何を作成していますか?

任意のヘルパーは、単なる値を返す関数です。 eqヘルパーは次のようになります。燃えさしがテンプレートをレンダリングするとき

function eq([l, r]) { 
    return l === r; 
} 

、それはこの機能を評価し、それが価値だ使用しています。引数の1つが変更された場合、再レンダリングが発生します。私はフードの下ではCPと似ていると思う。

1

性能の差はごくわずかです。条件付きのロジックがたくさんある場合、計算されたプロパティを使用するとよりクリーンになります。単純な条件の場合、1つまたは2つの比較で、ヘルパーを使用すると問題ありません。

ember-truth-helpersは簡単なヘルパーを提供しているので、自分で書く必要はありません。好きな場合は、特にember-truth-helpersがどのように値を比較するのが好きでない場合でも、独自のヘルパーを作成することができます。ほとんどの人にとって、ember-truth-helpersは、彼らが望むものを正確に行います。

Emberはバックグラウンドで何を作成していますか?

の一例を見てみましょう。ここではeq

ember-truth-helpersがやっていることです。

export function isEqual([a, b]) { 
    return emberIsEqual(a, b); 
} 

そして、ここではそれがEmberから呼び出していますemberIsEqual()方法です。

export default function isEqual(a, b) { 
    if (a && typeof a.isEqual === 'function') { 
    return a.isEqual(b); 
    } 

    if (a instanceof Date && b instanceof Date) { 
    return a.getTime() === b.getTime(); 
    } 

    return a === b; 
} 
関連する問題