Verwenden Sie Javascript-Bibliotheken in Kotlin

8

Das letzte Mal, als ich Kotlin benutzt habe, war im Dezember 2015, als ich es benutzte, um ein paar Probleme mit Project Euler zu lösen. >

Diesmal möchte ich die Interoperabilität mit Javascript testen. Nun meine Frage ist, wie importieren / verwenden wir vorhandene Javascript-Bibliotheken in Kotlin? Ich habe einige Personen gesehen, die das Schlüsselwort native verwenden, und ich möchte nur eine kurze Erklärung dazu.

    
Francis Fredrick Valero 20.09.2016, 08:06
quelle

3 Antworten

6

Es gibt kein native Keyword mehr, es gibt @native Annotation. Momentan ist es eine funktionierende Lösung und Sie können sie mit dem 1.0.x-Zweig des Kotlin-Compilers verwenden. Wir werden diese Annotation jedoch zugunsten von extern annotations ablehnen. Bereiten Sie sich also darauf vor, Ihren Code eventuell für den 1.1.x-Zweig neu zu schreiben.

Wenn Sie @native Annotation auf eine Klasse oder eine Funktion auf oberster Ebene setzen, passieren zwei Dinge:

  1. Sein Körper ist nicht nach JavaScript kompiliert.
  2. Der Compiler verweist direkt auf diese Klasse oder Funktion, ohne Paketname und Mangling.

Ich denke, es ist einfacher zu erklären, indem Sie ein Beispiel für eine JavaScript-Bibliothek angeben:

%Vor%

und eine entsprechende Kotlin-Deklaration

%Vor%

Beachten Sie, dass noImpl ein spezieller Platzhalter ist, der erforderlich ist, weil nicht abstrakte Funktionen erforderliche Körper und nicht abstrakte Eigenschaften Initialisierer erfordern. Übrigens, wenn wir @native durch extern ersetzen, werden wir diese noImpl loswerden.

Ein weiterer Aspekt der Zusammenarbeit mit JS-Bibliotheken ist die Einbindung von Bibliotheken über das Modulsystem. Entschuldigung, wir haben momentan keine Lösung (werden sie aber bald veröffentlichen). Siehe Vorschlag . Sie können die folgende Problemumgehung für node.js / CommonJS verwenden:

%Vor%

wo das externe Modul wie folgt deklariert wird

%Vor%     
Alexey Andreev 20.09.2016, 11:40
quelle
2

Ich habe ein einfaches Barebone-Projekt als Beispiel für das Ausführen von Kotlin2Js hinzugefügt.

Ссылка

Hier ist die Gradle-Datei, die das Hauptrezept ist.

%Vor%

Erstens können Sie eine dynamische Variable zuweisen und sie dann wie JavaScript dynamisch codieren.

z.B.

%Vor%

Aber wenn Sie beabsichtigen, es einzugeben, müssen Sie Typen in die externe Bibliothek einführen. Eine Möglichkeit besteht darin, die relativ umfangreichen Bibliotheken von typedefs durch Ссылка

zu nutzen

Finde die ts.d dort, dann führe ts2kt ( Ссылка ) aus, um deine Kotlin-Dateien zu erhalten. Das bringt dich normalerweise dorthin. Gelegentlich sind bestimmte Conversions nicht gut gelungen. Sie müssen die Konvertierung beheben. Z.B. snapsvgs Aufruf snapsvg.attr () nimmt "{}" auf, aber es wurde in eine seltsame Schnittstelle konvertiert.

Es war

%Vor%

Und ich habe es durch

ersetzt %Vor%

und es funktioniert wie ein Zauber.

    
Boon 08.06.2017 02:37
quelle
0

Kotlin 1.1 führt den external -Modifikator ein, mit dem Funktionen und Klassen deklariert werden können, die direkt in JS geschrieben wurden, siehe Ссылка

    
Pedi T. 24.03.2017 13:17
quelle

Tags und Links