Vor kurzem musste das ursprüngliche Vue-Projekt mithilfe von ts umgewandelt werden. Dies sollte der Entwicklungstrend für mittlere und große Projekte sein. Ich habe ein gutes Einführungstutorial gesehen und es mit einigen Erweiterungsdatensätzen kombiniert. Dieser Artikel erklärt alles von der Installation bis zum Schreiben von Vue-Komponenten und eignet sich für den Einstieg. 1. Einführung in Typescriptnpm installiere Vue-Klassenkomponente Vue-Eigenschaftsdekorator --speichern npm installiere TS-Loader Typescript tslint tslint-loader tslint-config-standard --save-dev 2. Konfigurationsdatei Webpack-KonfigurationDer Konfigurationsort variiert je nach Projekt. Wenn das Projekt mit Vue CLI 3.0 erstellt wird, muss es in vue.config.js konfiguriert werden. Wenn es eine Version unter 3.0 ist, muss es in webpack.base.conf konfiguriert werden. (Die folgenden Anweisungen müssen in der Datei webpack.base.conf geändert werden) Fügen Sie .ts zu resolve.extensions hinzu, um ts-Dateien in den Code einzufügen, ohne das Suffix .ts zu schreiben lösen: { Erweiterungen: ['.js', '.vue', '.json', '.ts'], Alias: {} } Fügen Sie TS-Regeln in module.rules hinzu Modul: { Regeln: { Test: /\.ts$/, ausschließen: /node_modules/, erzwingen: 'pre', Lader: „tslint-loader“ }, { Test: /\.tsx?$/, Lader: „ts-loader“, ausschließen: /node_modules/, Optionen: appendTsSuffixTo: [/\.vue$/] } } ] } tsconfig.json-Konfiguration { // Compileroptionen "compilerOptions": { // Ausgabeverzeichnis "outDir": "./output", // Ob eine SourceMap eingeschlossen werden soll, die zum Debuggen verwendet werden kann "sourceMap": wahr, // Im strikten Modus analysieren "strict": false, // Verwendetes Modulsystem "module": "esnext", // Wie verarbeite ich Module "moduleResolution": "node", // Ziel-ES-Version "target" kompilieren und ausgeben: "es5", // Standardimporte von Modulen zulassen, die keinen Standardexport festlegen "allowSyntheticDefaultImports": true, // Jede Datei als separates Modul behandeln "isolatedModules": false, // Dekoratoren aktivieren "experimentalDecorators": true, //Designtyp-Metadaten aktivieren (zur Reflektion) "emitDecoratorMetadata": wahr, // Fehler "noImplicitAny": false, wenn in Ausdrücken und Deklarationen ein impliziter Typ any vorkommt // Nicht alle Rückgabepfade einer Funktion geben einen Wert zurück und es wird ein Fehler gemeldet. "noImplicitReturns": wahr, // Externe Hilfsbibliotheken aus tslib importieren: wie __extends, __rest usw. "importHelpers": true, // Dateinamen während der Kompilierung drucken "listFiles": true, // Kommentare entfernen "removeComments": true, "suppressImplicitAnyIndexErrors": wahr, // Kompilierung von Javascript-Dateien zulassen "allowJs": true, // Basisverzeichnis zum Parsen nicht relativer Modulnamen "baseUrl": "./", //Pfad von Spezialmodulen angeben "paths": { "jquery": [ „node_modules/jquery/dist/jquery“ ] }, // Liste der Bibliotheksdateien, die während der Kompilierung eingeführt werden müssen "lib": [ "dom", "es2015", „es2015.promise“ ] } } Die tslint.json-Konfiguration fügt eine neue tslint.json-Datei im Verzeichnis hinzu. Da wir tslint-config-standard bereits installiert haben, können wir die Regeln in tslint-config-standard direkt verwenden. Die Datei sieht wie folgt aus: { "erweitert": "tslint-config-standard", "Globale": { "erfordern": wahr } } 3. Lassen Sie das Projekt .ts erkennenDa TypeScript standardmäßig keine Dateien mit der Endung *.vue unterstützt, müssen Sie beim Einfügen in ein Vue-Projekt eine Datei vue-shim.d.ts erstellen und im Stammverzeichnis ablegen. Deklariere das Modul '*.vue' { importiere Vue von „vue“; Standard-Vue exportieren; } 4. Schreiben von Vue-KomponentenDie meisten Methoden in Vue-Komponenten werden geändert, um @xxx (Dekorator) zu verwenden, um anzuzeigen, welche Daten aktuell definiert sind, ähnlich der Injektion in ng. Der JS-Teil der Geschäftslogik kann direkt in ts geschrieben werden. Grundlegendes Schreiben Die Schreibweise von <script lang="ts"> importiere { Komponente, Vue } von „vue-property-decorator“; @Komponente exportiere Standardklasse Test erweitert Vue { }; </Skript>
Definieren Sie Daten in data() Die Daten in data werden von der ursprünglichen exportiere Standardklasse Test erweitert Vue { öffentliche Nachricht1: Zeichenfolge = „heimayu“; öffentliche Nachricht2: Zeichenfolge = „Es ist wirklich wunderschön“; } RequisitenProps sind nicht so komfortabel wie Daten, da sie Dekoratoren verwenden müssen, die wie folgt geschrieben werden können @Stütze() propA:Zeichenfolge @Stütze() propB:Nummer $emit-Wert Ohne Parameter // Ursprünglicher Text: this.$emit('bindSend') // Schreiben Sie jetzt einfach this.bindSend() // Mehrere Definitionen @Emit() bindSend():Zeichenfolge{ gib diese Nachricht zurück } Methoden mit Parametern // Ursprünglicher Text: this.$emit('bindSend', msg) // Jetzt direkt schreiben: this.bindSend(msg) // Mehrere Definitionen unten @Emit() bindSend(msg:Zeichenfolge){ // etwas tun } mit Parametern ausgeben // Hier ist test der Name des @-Ereignisses, das die Komponentenreferenz ändert. In diesem Fall sollten Sie @test statt @bindSend2 schreiben @Emit('test) private bindSend2(){ } Beobachtungsdaten ansehen //Originaltext watch:{} @Watch('propA',{ tief:wahr }) test(neuerWert:Zeichenfolge,alterWert:Zeichenfolge){ console.log('propA-Wert geändert' + neuerWert); } Berechnete Eigenschaften öffentliche erhalten berechneteMsg(){ return 'Hier ist die berechnete Eigenschaft' + this.message; } öffentliches Set berechneteMsg(Nachricht: Zeichenfolge) { } Vollständiges Codebeispiel<Vorlage> <div Klasse="Testcontainer"> {{Nachricht}} <input type="button" value="Klicken, um übergeordnete Methode auszulösen" @click="bindSend"/> <input type="button" value="Klicken, um übergeordnete Methode auszulösen" @click="handleSend"/> <input type="button" value="Klicken, um übergeordnete Methode auszulösen" @click="bindSend2"/> <!-- <Hallo></Hallo> --> </div> </Vorlage> <script lang="ts"> importiere { Komponente, Prop, Vue, Watch, Emit } von „vue-property-decorator“; importiere Hallo aus "./HelloWorld.vue"; // Geben Sie an, dass diese Klasse eine Vue-Komponente ist @Component({ Komponenten: Hallo } }) exportiere Standardklasse Test erweitert Vue { // Die Daten in den Originaldaten werden erweitert und hierhin geschrieben. public message: string = "asd"; //Erweitern Sie die Daten in den ursprünglichen Eigenschaften, um @Prop({ zu schreiben. Typ: Nummer, Standard: 1, erforderlich: false }) propA?: Zahl @Stütze() propB:Zeichenfolge //Ursprünglich berechnet öffentliche erhalten berechneteMsg(){ return 'Hier ist die berechnete Eigenschaft' + this.message; } öffentliches Set berechneteMsg(Nachricht: Zeichenfolge) { } //Ursprüngliches Uhrattribut @Watch('propA',{ tief:wahr }) öffentlicher Test(neuerWert:Zeichenfolge,alterWert:Zeichenfolge){ console.log('propA-Wert geändert' + neuerWert); } // Wenn Sie früher einen Wert an das übergeordnete Element übergeben mussten, konnten Sie einfach emit in der Methode verwenden. Jetzt müssen Sie emit verwenden, um @Emit() zu verarbeiten. private bindSend():string{ gib diese Nachricht zurück } @Emittieren() private bindSend1(msg:Zeichenfolge,love:Zeichenfolge){ // Wenn du es nicht verarbeiten möchtest, brauchst du das Folgende nicht zu schreiben, die Parameter werden automatisch zurückgegeben // msg += 'love'; // Nachricht zurückgeben; } //Die ursprüngliche Methode wird in Methoden angelegt public handleSend():void { dies.bindSend1(diese.Nachricht,'Liebe'); } // Die Parameter in „emitt“ geben hier an, was das übergeordnete Element akzeptiert, ähnlich wie beim vorherigen $emit('übergeordnet definierte Methode') @Emit('Test') private bindSend2(){ return: „Dies kann durch Test akzeptiert werden“; } } </Skript> Damit ist dieser Artikel über das Einführungstutorial zur Verwendung von ts (Typescript) in Vue-Projekten abgeschlossen. Weitere relevante Einführungsinhalte zu Vue Typescript finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung des Anwendungsfalls für MySQL-Fremdschlüssel (FOREIGN KEY)
>>: So erstellen Sie eine TAR-Datei von WSL über Docker
Inhaltsverzeichnis 1. Löschen Sie die alte Versio...
In diesem Artikel wird die Zusammensetzung der Ha...
In diesem Artikel wird der spezifische Code von V...
Inhaltsverzeichnis 1. Einführung in Nginx 1. Was ...
Allgemeine Formulareingabeaufforderungen belegen ...
Wenn der Tabellenkopf fixiert ist, muss er in zwe...
Kürzlich habe ich bei der Arbeit an einem Projekt...
In diesem Artikel wird der spezifische Code von J...
1. Was ist die HTML-Auszeichnungssprache? HTML is...
Inhaltsverzeichnis Was ist eine Mindmap? Wie zeic...
Analysieren Sie die Produktionsschritte: 1. Resso...
1. CSS realisiert eine feste Breite links und ein...
Inhaltsverzeichnis Überblick 1. Download über URL...
Vorwort Wenn Sie das Attribut „overflow: scroll“ ...
MySQL-Datenbanken werden häufig verwendet, insbes...