EinführungIn den letzten Jahren wurde der Ruf nach TypeScript immer lauter und Typescript ist zu einer notwendigen Fähigkeit für das Front-End geworden. TypeScript ist eine Obermenge von JS-Typen und unterstützt Funktionen wie Generika, Typen, Namespaces, Aufzählungen usw., wodurch die Mängel von JS bei der Entwicklung groß angelegter Anwendungen ausgeglichen werden. Wenn Sie TypeScript allein lernen, werden Sie feststellen, dass viele Konzepte relativ leicht zu verstehen sind, aber es gibt immer noch viele Fallstricke, wenn Sie es in Kombination mit einigen Frameworks verwenden. Wenn Sie beispielsweise Frameworks wie React und Vue verwenden, wird die Kombination mit TypeScript zu einem großen Hindernis. Sie müssen die Definitionen einiger komplexer Typen in den vom Framework bereitgestellten .d.ts-Deklarationsdateien und die Schreibmethoden von Komponenten usw. überprüfen und erhebliche Anpassungen vornehmen. In diesem Artikel bündele ich hauptsächlich meine Erfahrungen, um Ihnen zu erklären, wie Sie in BauenInstallation durch das offizielle Gerüst # 1. Wenn Vue CLI nicht installiert ist, installieren Sie es zuerst npm install --global @vue/cli Mit dem neuesten Führen Sie einfach Sie werden dann in der Befehlszeile aufgefordert, eine Voreinstellung auszuwählen. Verwenden Sie die Pfeiltasten, um „Funktionen manuell auswählen“ auszuwählen. Stellen Sie als Nächstes einfach sicher, dass die Optionen TypeScript und Babel ausgewählt sind, wie unten gezeigt: Konfigurieren Sie dann die restlichen Einstellungen wie unten gezeigt: Sobald die Einrichtung abgeschlossen ist, beginnt vue cli mit der Installation von Abhängigkeiten und der Einrichtung des Projekts. VerzeichnisauflösungÖffnen Sie nach Abschluss der Installation das Projekt und Sie werden feststellen, dass die Projektverzeichnisstruktur nach der Integration von ts folgendermaßen aussieht: |-- ts-vue |-- .browserslistrc # Browserslistrc-Konfigurationsdatei (zur Unterstützung von Autoprefixer) |-- .eslintrc.js # eslint-Konfiguration |-- .gitignore |-- babel.config.js # Babel-Loader-Konfiguration |-- package-lock.json |-- package.json # package.json-Abhängigkeiten|-- postcss.config.js # PostCSS-Konfiguration|-- README.md |-- tsconfig.json # Typescript-Konfiguration |-- vue.config.js # Vue-CLI-Konfiguration |-- public # statische Ressourcen (werden direkt kopiert) | |-- favicon.ico # Favicon-Symbol| |-- index.html # HTML-Vorlage|-- src | |-- App.vue # Einstiegsseite| |-- main.ts # Einstiegsdatei, Laden der Komponente, Initialisierung usw.| |-- shims-tsx.d.ts | |-- shims-vue.d.ts | |-- Assets # Designschriftarten und andere statische Ressourcen (geladen von Webpack) | |-- Komponenten # Globale Komponenten| |-- Router # Routing| |-- Store # Globaler Vuex-Store | |-- Stile # Globale Stile| |-- Ansichten # Alle Seiten|-- Tests # Tests Tatsächlich gibt es grob gesagt keinen großen Unterschied zum Projektverzeichnis, das zuvor mit
verwendenBevor wir beginnen, schauen wir uns einige sehr nützliche Bibliotheken für die Verwendung von Typescript in Vue an importiere { Vue, Komponente, Injizieren, Bereitstellen, Prop, Modell, Beobachten, Emittieren, Mixins } von 'vue-property-decorator' importiere { Modul, VuexModul, Mutation, Aktion, MutationAction, getModul } von 'vuex-module-decorators' KomponentendeklarationSo erstellen Sie eine Komponente importiere { Komponente, Prop, Vue, Watch } von „vue-property-decorator“; @Komponente exportiere Standardklasse Test erweitert Vue { } Datenobjekt importiere { Komponente, Prop, Vue, Watch } von „vue-property-decorator“; @Komponente exportiere Standardklasse Test erweitert Vue { privater Name: Zeichenfolge; } Prop-Deklaration @Prop({ Standard: false }) private istCollapse!: boolesch; @Prop({ Standard: true }) private istErstesLevel!: boolean; @Prop({ Standard: "" }) privater Basispfad!: Zeichenfolge; !: bedeutet, dass es vorhanden sein muss, ?: bedeutet, dass es möglicherweise nicht vorhanden ist. Diese beiden werden grammatikalisch Zuweisungsbehauptungen genannt @Prop(Optionen: (PropOptions | Konstruktor[] | Konstruktor) = {})
Verfahren In js muss die Methode im Methodenobjekt deklariert werden, das nun wie folgt aussieht öffentliche Klickfunktion(): void { console.log(dieser.Name) console.log(diese.msg) } Überwachungseigenschaften überwachen @Watch("$route", { unmittelbar: true }) private beiRoutenänderung(route: Route) { const query = route.query als Dictionary<string>; wenn (Abfrage) { diese.Umleitung = Abfrage.Umleitung; diese.andereQuery = diese.getOtherQuery(Abfrage); } } @Watch(Pfad: Zeichenfolge, Optionen: WatchOptions = {}) options enthält zwei Eigenschaften: immediate?:boolean: ob die Callback-Funktion sofort nach dem Start des Abhörens aufgerufen werden soll / deep?:boolean: ob die Callback-Funktion aufgerufen werden soll, wenn die Eigenschaft des überwachten Objekts geändert wird @Watch('arr', { unmittelbar: wahr, tief: wahr }) berechnet öffentlich erhalten alle Namen () { gibt 'berechnet ' + diesen.Namen zurück; } allname ist der berechnete Wert, name ist der überwachte Wert Lebenszyklusfunktionen öffentlich erstellt(): void { console.log('erstellt'); } öffentlich gemountet():void{ console.log('eingebunden') } Ereignisse ausgeben importiere { Vue, Komponente, Emit } von 'vue-property-decorator' @Komponente exportiere Standardklasse MyComponent erweitert Vue { Anzahl = 0 @Emittieren() addToCount(n: Zahl) { dies.Anzahl += n } @Emit('zurücksetzen') Anzahl zurücksetzen() { diese.Anzahl = 0 } @Emittieren() Rückgabewert() { Rückkehr 10 } @Emittieren() beiEingabeÄnderung(e) { returniere e.Ziel.Wert } @Emittieren() versprechen() { gib ein neues Versprechen zurück (Auflösen => { setzeTimeout(() => { Entschlossenheit(20) }, 0) }) } } Verwenden Sie js-Schreiben Standard exportieren { Daten() { zurückkehren { Anzahl: 0 } }, Methoden: { HinzufügenZähler(n) { dies.Anzahl += n dies.$emit('zum Zähler hinzufügen', n) }, Anzahl zurücksetzen() { diese.Anzahl = 0 dies.$emit('zurücksetzen') }, Rückgabewert() { dies.$emit('Rückgabewert', 10) }, beiEingabeÄnderung(e) { dies.$emit('bei Eingabeänderung', e.Zielwert, e) }, versprechen() { const Versprechen = neues Versprechen(lösen => { setzeTimeout(() => { Entschlossenheit(20) }, 0) }) versprechen.dann(Wert => { dies.$emit('Versprechen', Wert) }) } } }
vuex Bevor wir den Ladendekorateur verwenden, schauen wir uns die traditionelle Ladennutzung an. Standard exportieren { Namespace: wahr, Zustand:{ foo:"" }, Getter: { getFoo(Zustand) { return Zustand.foo} }, Mutationen: setFooSync(Status, Nutzlast){ state.foo = Nutzlast } }, Aktionen: { setFoo({commit},Nutzlast){ commot("getFoo",Nutzlast) } } } Beginnen Sie dann mit der Verwendung importieren { VuexModul, Mutation, Aktion, getModule, Modul } von „vuex-module-decorators“; exportiere Standardklasse TestModule erweitert VuexModule { } VuexModule bietet einige grundlegende Eigenschaften, darunter Namespaces, Status, Getter, Module, Mutationen, Aktionen, Kontext @Module({ dynamisch: true, speichern, Name: "Einstellungen" }) Klasse Settings erweitert VuexModule implementiert ISettingsState { } Das Modul selbst hat mehrere konfigurierbare Eigenschaften:
@Mutation private SET_NAME(Name: Zeichenfolge) { // Benutzernamen festlegen this.name = name; } @Aktion öffentliche asynchrone Anmeldung(Benutzerinfo: {Benutzername: Zeichenfolge;Passwort: Zeichenfolge}) { // Schnittstelle anmelden und Token erhalten let { Benutzername, Passwort } = Benutzerinfo; Benutzername = Benutzername.trim(); const { data } = warte auf Login({ Benutzername, Passwort }); setToken(Daten.Zugriffstoken); dies.SET_TOKEN(Daten.Zugriffstoken); } exportiere const UserModule = getModule(Benutzer); Dies ist das Ende dieses Artikels zur Verwendung von TypeScript in Vue. Weitere Informationen zur Verwendung von TypeScript in Vue 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:
|
<<: MySQL 8.X Installations-Tutorial unter Windows
Ergebnisse erzielen Bauen Sie zunächst mit HTML e...
Inhaltsverzeichnis Hintergrund erreichen 1. Gekap...
Inhaltsverzeichnis Mysql Master-Slave-Synchronisi...
1. Erstellen Sie eine Docker-Umgebung 1. Erstelle...
MySQL-Datenbank meldet FEHLER 1045 (28000): Zugri...
# Installations-Daemon-Konfiguration für Redis un...
Inhaltsverzeichnis 1. Befehl 2. docker-compose.ym...
HTML und CSS 1. Verständnis und Kenntnisse von WE...
Rational ClearCase ist ein Tool für das Softwarek...
Laden Sie zuerst die Abhängigkeiten herunter Garn...
Es besteht kein Zweifel, dass Container zu einem ...
Hintergrund Alle Unternehmenswebsites müssen das ...
Erstellen einer neuen Tabelle CREATE TABLE `Perso...
Das Datenvolumen ist ein wichtiges Konzept von Do...
In diesem Artikelbeispiel wird der spezifische Im...