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.
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:
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%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 nutzenFinde 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.
Tags und Links kotlin