javascript - Est-ce une bonne pratique de définir une variable en dehors de la portée de la classe dans Angular ?
Il est courant de voir ces codes dans Angular :
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app',
template: '<div *ngFor="let item of data"></div>'
})
export class App {
// we define variable here
data = [1, 2];
tempData = [3, 4]; //temporary data, not involved in view rendering
}
Comme nous pouvons le voir, une variable temporaire ne sera pas impliquée dans le rendu de la vue, mais la variable temp est également nécessaire pour notre application pour le stockage temporaire de données.
et si on écrivait comme ça :
import { Component, OnInit } from '@angular/core';
const tempData = [3, 4]; //temporary data, not involved in view rendering
@Component({
selector: 'app',
template: '<div *ngFor="let item of data"></div>'
})
export class App {
// we define variable here
data = [1, 2];
}
Puisque la variable temporaire ne sera pas utilisée dans le rendu de la vue, je peux la définir en dehors de la classe. Et à mon avis, cela optimisera les performances (parce que cela réduit la détection des variables pour Angular, je ne sais pas si c'est correct).
Alors, quel style de code est meilleur, et y a-t-il une différence de performance entre eux ?
Réponse #1
Dans votre premier exemple, il y a un tempData pour chaque instance de votre classe (ce n'est pas une variable, c'est une propriété). Dans votre deuxième exemple, un tempData est réutilisé par toutes les instances de votre classe (et dans ce cas, ce n'est pas une propriété, c'est une constante).
Lequel vous utilisez dépend de si vous avez besoin d’un tempData par instance ou d’un partagé.
Le déclarer au niveau supérieur de votre module (en dehors du composant) si c’est une information privée et que vous n’avez pas besoin qu’elle soit par instance est tout à fait acceptable. Elle sera privée à ce module.
Alors, quel style de code est meilleur, et y a-t-il une différence de performance entre eux ?
Aucun n'est meilleur ; ils sont différents et font des choses différentes, donc vous en utilisez un ou l'autre selon ce que vous devez faire. Toute différence de performance entre eux sera totalement négligeable, rien dont il faille se préoccuper.