So wenden Sie TypeScript-Klassen in Vue-Projekten an

So wenden Sie TypeScript-Klassen in Vue-Projekten an

1. Einleitung

TypeScript basiert auf der Bibliothek vue-class-component , einer offiziellen von Vue gestarteten Bibliothek, die die Verwendung von class zur Entwicklung vue -Einzeldateikomponenten unterstützt.

Die Hauptfunktionen sind wie folgt:

  • methods können direkt als Membermethoden einer Klasse deklariert werden
  • Berechnete Eigenschaften können als Eigenschaftszugriffsmethoden einer Klasse deklariert werden.
  • Initialisierte data können als Klassenattribute deklariert werden
  • data , render und alle Vue-Lifecycle-Hooks können direkt als Klassenmitgliedsmethoden verwendet werden.
  • Alle anderen Eigenschaften müssen im Dekorator platziert werden

2. Verwendung

vue-property-decorator stellt hauptsächlich die folgenden Dekoratoren bereit

  • @Stütze
  • @PropSync
  • @Modell
  • @Betrachten
  • @Bieten
  • @Injizieren
  • @ProvideReactive
  • @InjectReactive
  • @Emittieren
  • @Referenz
  • @Component (bereitgestellt von vue-class-component)
  • Mixins (bereitgestellt von Vue-Class-Component)

1. @Komponente

Component Es kennzeichnet diese Klasse als Vue-Komponente, sodass sie nicht weggelassen werden kann, auch wenn keine Optionen festgelegt sind

Wenn Sie name , components , filters , directives und benutzerdefinierte Eigenschaften definieren müssen, können Sie diese im Component Dekorator wie folgt definieren:

importiere {Component,Vue} aus „vue-property-decorator“; 
importiere {KomponenteA,KomponenteB} aus '@/Komponenten'; 
 
 @Komponente({ 
    Komponenten: { 
        KomponenteA, 
        Komponente B, 
    }, 
    Anweisungen: { 
        Fokus: 
            // Definition der Anweisung eingefügt: function (el) { 
                el.fokus() 
            } 
        } 
    } 
}) 
exportiere Standardklasse YourComponent erweitert Vue{ 
    
} 


2. Berechnet, Daten, Methoden

Dabei entfallen data und methods der Komponente. Bisher mussten die Attribute im Datenrückgabeobjekt und die Methoden in methods direkt in der Klasse als Attribute und Methoden der Klasse definiert werden.

@Komponente 
exportiere Standardklasse HelloDecorator erweitert Vue { 
    count: number = 123 // Das Klassenattribut entspricht den vorherigen Daten 
 
    add(): number { // Die Klassenmethode ist die gleiche wie die vorherige Methode this.count + 1 
    } 
 
    // Das berechnete Attribut abrufen get total(): number { 
      gib dies zurück.Anzahl + 1 
    } 
 
    // Die berechneten Eigenschaften festlegen set total(param:number): void { 
      this.count = Parameter 
    } 
} 

3. @Requisiten

Die Komponente erhält den Dekorator des Attributs, der wie folgt verwendet wird:

importiere {Component,Vue,Prop} vom Vue-Eigenschaftsdekorator; 
 
@Komponente 
exportiere Standardklasse YourComponent erweitert Vue { 
    @Prop(Zeichenfolge) 
    propA: Zeichenfolge; 
     
    @Prop([Zeichenfolge,Zahl]) 
    propB:Zeichenfolge|Zahl; 
     
    @Stütze({ 
     Typ: String, // Typ: [String, Zahl] 
     Standard: „Standardwert“, // normalerweise eine Zeichenfolge oder Zahl 
      //Wenn es ein Objekt oder ein Array ist. Der Standardwert wird von einer Factory-Funktion zurückgegeben // default: () => { 
      // returniere ['a','b'] 
      // } 
     erforderlich: wahr, 
     validator: (Wert) => { 
        zurückkehren [ 
          'In Bearbeitung', 
          "Erledigt" 
        ].indexOf(Wert) !== -1 
     } 
    }) 
    propC: Zeichenfolge; 
} 


4. @watch

Es handelt sich eigentlich um den Listener in Vue, und zwar wie folgt:

importiere { Vue, Komponente, Watch } von 'vue-property-decorator' 
 
@Komponente 
exportiere Standardklasse YourComponent erweitert Vue { 
  @Watch('Kind') 
  beiKindGeändert(Wert: Zeichenfolge, alterWert: Zeichenfolge) {} 
 
  @Watch('Person', { unmittelbar: wahr, tief: wahr }) 
  beiPersonGeändert1(Wert: Person, alterWert: Person) {} 
 
  @Watch('Person') 
  beiPersonGeändert2(Wert: Person, alterWert: Person) {} 
} 


5. @emit

Der von vue-property-decorator bereitgestellte @Emit -Dekorator ersetzt $emit Trigger von Ereignissen in Vue wie folgt:

importiere {Vue, Komponente, Emit} von „vue-property-decorator“; 
    @Komponente({}) 
    exportiere Standardklasse Einige erweitert Vue{ 
        montiert(){ 
            dies.$on('emit-todo', Funktion(n) { 
                console.log(n) 
            }) 
            dies.emitTodo('Welt'); 
        } 
        @Emittieren() 
        emitTodo(n: Zeichenfolge){ 
            console.log('hallo'); 
        } 
    } 

Abschluss

Sie können sehen, dass sich die Syntax der obigen typescript Version der vue class stark von der der üblichen javascript Version unterscheidet. Klassen und Dekoratoren werden an vielen Stellen verwendet, aber tatsächlich ist das Wesentliche dasselbe. Nur durch ständiges Schreiben können Sie darin kompetent werden.

Dies ist das Ende dieses Artikels zur Anwendung TypeScript in Vue-Projekten. Weitere Informationen zur Anwendung von TypeScript in Vue -Projekten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • TypeScript-Aufzählungstyp
  • Einführung in die grundlegenden TypeScript-Typen
  • TypeScript-Aufzählungstypen im Detail erklären
  • Detaillierte Erklärung des Typschutzes in TypeScript
  • Eine kurze Diskussion über den Typschutzmechanismus von TypeScript
  • Klassen in TypeScript

<<:  Verwendung des Linux-Befehls passwd

>>:  Detaillierte Analyse der MySQL Master-Slave-Replikation

Artikel empfehlen

Verwendung des MySQL-Zeitstempels

Vorwort: Zeitstempelfelder werden häufig in MySQL...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.17

In diesem Artikel wird die Installations- und Kon...

VUE+Canvas realisiert den gesamten Prozess eines einfachen Gobang-Spiels

Vorwort In Bezug auf das Layout ist Gobang viel e...

Detaillierte Erläuterung der Überwachung der NVIDIA GPU-Nutzung unter Linux

Bei der Verwendung von TensorFlow für Deep Learni...

Mehrere Lösungen für domänenübergreifende Gründe in der Webentwicklung

Inhaltsverzeichnis Domänenübergreifende Gründe JS...

10 zu wenig genutzte oder missverstandene HTML-Tags

Hier sind 10 HTML-Tags, die zu wenig verwendet od...

Lösung für Docker-Container, der Schriftarten wie Songti nicht erkennt

Problemhintergrund: Wenn Sie Docker zum Bereitste...

Eine kurze Analyse des Unterschieds zwischen FIND_IN_SET() und IN in MySQL

Ich habe die Mysql FIND_IN_SET-Funktion vor einig...

Detaillierte Erklärung zur SQL-Injection - Sicherheit (Teil 2)

Sollte dieser Artikel Fehler enthalten oder du An...

Implementierung der Docker-Compose-Bereitstellung des ZK+Kafka+Storm-Clusters

Übersicht über die Clusterbereitstellung 172.22.1...

Detaillierte Erklärung zur Verwendung von JavaScript WeakMap

Ein WeakMap-Objekt ist eine Sammlung von Schlüsse...

Implementierungsprinzip und Skriptcode der HTML-Rabattpreisberechnung

Code kopieren Der Code lautet wie folgt: <!DOC...

Beispielcode, der gängige Grafikeffekte in CSS-Stilen zeigt

Lassen Sie mich kurz einige gängige Grundgrafiken...