Zusätzliche TS-Typenbibliotheken in monaco, die das Editor-Erlebnis erheblich verbessern

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Zusätzliche TS-Typenbibliotheken in monaco, die das Editor-Erlebnis erheblich verbessern

Präambel

In einem früheren Artikel haben wir beschrieben, wie man eine Methode in monaco kommentieren kann, um die Dokumentation einer Variablen, Konstanten oder Methoden über codelen oder Marker anzuzeigen. Diese Methode eignet sich jedoch nicht sehr gut für große Bibliotheken, z. B. für eine JS-Bibliothek mit hunderten Methoden, und es ist für einen faulen Programmierer unmöglich, jede Methode zu monaco hinzuzufügen. Dieser Artikel beschreibt eine Datei mit Typdeklarationen, die die Editor-Erfahrung verbessern kann. Sie können nicht nur eine detaillierte Dokumentation einer Methode anzeigen, sondern auch die automatische Vervollständigung der Methode.

Kernmethode hat nur eineaddExtraLib()

addExtraLib

Da monaco nicht wie vcode mit LSP (Language Service Protocol) zugänglich ist, muss alles automatisch in Massen implementiert werden, ist die Methode Kommentare lästig, aber monaco hat die Methode addExtraLib hinzugefügt, die eine Zeichenfolge mit einem Typ deklariert übergeben kann.

declare class Facts {
  /**
   * Returns the next fact
   */
  static next(): string
}

Dieser Text wird mit addExtraLib demmonaoc-Sprachdienst hinzugefügt, so dass er automatisch geschrieben wird, wenn der BenutzerFacts.next()schreibt, und die Kommentare zu dieser Methode in der next-Methode angezeigt werden. Wenn Sie ein Sprachmodell mit dem Inhalt der ts-Typen - Deklaration erstellt haben, können Sie die spezifischen Deklarationen auf dieser Methode wie in der folgenden Abbildung ansehen:

Zusätzliche TS-Typenbibliotheken in monaco, die das Editor-Erlebnis erheblich verbessernAbbildung

Wenn Sie ein Sprachmodell mit dem Inhalt der ts-Typen - Deklaration erstellt haben, können Sie die spezifischen Deklarationen in dieser Methode wie folgt anzeigen:

Zusätzliche TS-Typenbibliotheken in monaco, die das Editor-Erlebnis erheblich verbessernAbbildung1

Dieses Szenario hat viele Vorteile, insbesondere für Programmierer, die nicht mit einer Methode vertraut sind. Sie können die Maus direkt über den Methodennamen bewegen und das Dokument anzeigen. Sehr freundlich, bequem.

Wenn Sie die JS-Bibliotheken wielodash oder jquery verwenden, vergessen Sie manchmal den vollständigen Namen einer Methode oder können Sie sich nicht an die Reihenfolge der Parameter einer Methode erinnern. Dafür benötigt man eine Methodendokumentation.

Ich werde die beiden Bibliotheken von Lodash und jQuery als Beispiel verwenden, um sie zu monako hinzuzufügen.

Integration der loadash-Bibliothek in den monako-Editor

Z un ächst erhalten wir die ts - D ek laration von Lod ash . Nach einer einfa chen Su che habe ich dieses Git - L ager gefunden , https ://github.com/DefinitelyTyped/DefinitelyTyped
In diesem Repository sind viele der ts-Statements unserer häufig verwendeten Bibliotheken gespeichert.
Wir kennen die TS-Erklärung von Lodash. Hier kann erworben werden.
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/lodash/v3/index.d.ts
Achten Sie auf einige Bücher.index.d.ts Es ist nur eine Hülle, die Substanz ist in den einzelnen Unterdateien verteilt.
Wir speichern die oben verlinkten Inhaltelodash.d.tsDatei

Dann verwenden wir fetch in html, um den Inhalt dieser Datei zu erhalten, der Kerncode wie folgt

const monacoTypesUrl = './lodash.d.ts'
const libSource = await (await fetch(monacoTypesUrl)).text();
console.log(libSource)

var libUri = "ts:filename/lodash.d.ts";
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri);
// When resolving definitions and references, the editor will try to use created models.
// Creating a model for the library allows "peek definition/references" commands to work with the library.
monaco.editor.createModel(libSource, "typescript", monaco.Uri.parse(libUri));

integriert ist, um die Leistung im Editor zu sehen, wenn wir den Namespacelodashausführen_von

Zusätzliche TS-Typenbibliotheken in monaco, die das Editor-Erlebnis erheblich verbessernAbbildung2

Dann rufen wir seine cloneDeep-Methode auf, wie in der folgenden Abbildung:

Zusätzliche TS-Typenbibliotheken in monaco, die das Editor-Erlebnis erheblich verbessernAbbildung3

Ist das nicht sehr gut?

Schauen wir uns die Integration der jQuery-Bibliothek an.

Integration der jquery-Bibliothek in den monako-Editor

Folgen Sie den oben genannten Schritten und erhalten wir zuerst die TS-Datei für jqueyr.
Über den folgenden Link können Sie die ts-Deklaration für jQuery v2 - Versionen erhalten.
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jquery/v2/index.d.ts

Kopieren Sie den Inhalt der Dateien und legen Sie sie in die lokale Datei jquery.d.ts ein.
Änderungen monacoTypesUrl Die Variablen sind './jquery.d.ts'

Wir werden uns die automatische Vervollständigung des jquery ajax-Aufrufs ansehen.

Zusätzliche TS-Typenbibliotheken in monaco, die das Editor-Erlebnis erheblich verbessernAbbildung4


Überprüfen Sie die Ajax-Methodenreferenz

Zusätzliche TS-Typenbibliotheken in monaco, die das Editor-Erlebnis erheblich verbessernAbbildung5

Das ist eine hervorragende Erfahrung, zusätzliche Bibliotheken in monaco zu integrieren. Das kann die Benutzererfahrung des Editors erheblich verbessern.

Darüber hinaus können Sie mehrere TS-Deklarationsbibliotheken gleichzeitig injizieren oder Ihre eigene TS-Deklarationsbibliothek schreiben, um die automatische Aufforderung zu erledigen und automatisch abzuschließen.

Zusammenfassung

Der Editor ist ein sehr komplexes Software-Produkt, und jede Funktion, die die Benutzererfahrung verbessern kann, muss berücksichtigt werden.
Die Entwicklungserfahrung entscheidet direkt über den Erfolg des Produkts.

Relevante Etiketten
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.