extjs Étendre vs annuler


Exemple

Remplace:

Remplacer le fichier:

Ext.define('MyApp.override.CornField',
    override: 'Ext.form.field.Text',
    initComponent: function () {
        this.callParent(arguments);
        this.setValue('Corn!');
    }
);

Utiliser dans l'application:

{
    xtype: 'textfield'
}

Extensions:

Remplacer le fichier:

Ext.define('MyApp.form.field.CornField',
    extend: 'Ext.form.field.Text',
    alias: 'widget.cornfield',
    initComponent: function () {
        this.callParent(arguments);
        this.setValue('Corn!');
    }
);

Utiliser dans l'application:

{
    xtype: 'cornfield'
}

Explication

ExtJS propose deux méthodes principales pour modifier le comportement des classes existantes: leur extension et leur remplacement. Chacun présente des avantages et des inconvénients à prendre en compte avant de les utiliser.

Les extensions

L'extension d'une classe crée une nouvelle classe qui hérite de son comportement et de sa configuration de son parent. En créant une nouvelle classe via l'extension, des modifications répétées de la configuration et du comportement peuvent être effectuées dans un emplacement central et réutilisées dans toute l'application. Le plus grand avantage de l'extension est que la classe parente reste intacte et disponible pour des cas d'utilisation plus simples où le comportement étendu n'est pas souhaité.

Les exemples de cas d'utilisation judicieux pour les extensions incluent des champs de formulaire personnalisés avec un comportement spécial, des modaux spécialisés et des composants personnalisés en général.

Remplace

Le remplacement d'une classe modifie le comportement d'une classe existante en place. La configuration et les méthodes dans les remplacements remplacent entièrement leurs homologues de la classe parente, en créant de nouvelles configurations par défaut et un comportement qui remplissent l'ensemble de l'application. Les dérogations doivent être utilisées avec parcimonie en raison de la nature destructive de leur utilisation. une classe étendue peut généralement offrir les mêmes avantages tout en laissant la classe des parents intacte.

Cependant, les dérogations peuvent apporter des avantages dans certaines situations. Les cas de bonne utilisation incluent la correction de bogues dans les classes existantes, la modification du comportement du proxy pour ajouter des informations supplémentaires aux requêtes, telles que des jetons ou des données de session, et un comportement spécifique sur une application.