1

Si j'utilise ce plugin: https://github.com/jmurphyau/ember-truth-helpersEmber 2, Performances à l'aide de plug-in comme Ember-vérité-aides au lieu de simplement la méthode par défaut Ember

avec beaucoup, disons,

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

ou

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

ce qui est Ember crée en arrière-plan? Le même travail javascript des propriétés calculées comme:

isBeautiful: Ember.computed.equal('model.beautiful', true); et ainsi de suite?

Si j'ai 30 computedProperty (macros Ember et personnalisées), il est préférable d'utiliser ce plugin ou la méthode Ember par défaut?

Je me demande parce que dans certains modèles je peux avoir quelque chose comme ça beaucoup de fois !:

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

au lieu de simplement celui-ci:

{{#if isBeautifulOrCrazy }}

Quelle est la meilleure solution en termes de performances?

Répondre

1

Je ne pense pas que les utilisateurs remarqueront une différence. Mon choix est moins de code et une meilleure maintanability si possible. Dans votre cas, si vous avez plus de 3 des mêmes lignes {{#if (or (eq model.beautiful true) (eq model.crazy true)) }}, je suggérerais la propriété calculée. Cela rendra les gabarits beaucoup plus simples et le contrôleur incroyablement plus grand. Si vous avez la même ligne exacte sur plusieurs modèles, vous pouvez créer une propriété calculée sur le modèle, ce sera donc {{#if model.isBeautifulOrCrazy }}. Ou un assistant de modèle.

Que crée Ember en arrière-plan?

Toute aide est juste une fonction qui retourne une valeur. eq aide ressemblera à ceci:

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

Lorsque Ember rend modèle, il évalue cette fonction et utilise alors sa valeur. Et le rerender se produit si un des arguments a été changé. Je pense que sous le capot c'est quelque chose de similaire à CP.

1

La différence de performance sera négligeable. Si vous avez beaucoup de logique conditionnelle, il sera plus propre d'utiliser les propriétés calculées. Pour des conditions simples, avec une ou deux comparaisons, utiliser les aides est très bien.

ember-truth-helpers fournit des aides simples pour que vous n'ayez pas besoin de les écrire vous-même. Si vous préférez, vous pouvez simplement créer vos propres aides, surtout si vous n'aimez pas comment ember-truth-helpers compare les valeurs. Pour la plupart des gens, ember-truth-helpers fait exactement ce qu'ils veulent.

Que crée Ember en arrière-plan?

Jetons un coup d'oeil à un exemple: eq

Voici ce que ember-truth-helpers est fait:

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

Et voici la méthode emberIsEqual() qu'il appelle de Ember.

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; 
}