Fable: Verschieben Sie REPL-Komponenten in dieses Repository

Erstellt am 27. Nov. 2018  ·  12Kommentare  ·  Quelle: fable-compiler/Fable

Wir haben mehrmals über die Komponentenbildung des REPL gesprochen. Ich habe darüber nachgedacht, ein anderes Repository zu erstellen, um diese Kernkomponenten zu hosten. Aber da wir hier bereits die FCS+Fable JS-Kompilierung generieren und wir einige Teile für andere Pakete benötigen (wie die Metadaten-Assemblys für fable-compiler-js), ist es wahrscheinlich einfacher, wenn wir die Komponenten hier generieren und aus anderen Repos ziehen .

Die Idee ist also, hier zu setzen:

  • Der REPL-Webworker, der Nachrichten zum Kompilieren, Bereitstellen von Tooltips usw. empfangen kann
  • Die Metadaten (System.dll und so) + Fable.Repl.Lib-Assemblys (und vorkompilierte JS-Dateien), die für die Kompilierung referenziert werden müssen
  • Die React-Komponente für den Monaco-Editor für F#-Code.

Der fable-compiler/repl sollte diese Komponenten abrufen und den Rest der Benutzeroberfläche und des Verhaltens bereitstellen. Es wird auch die Basis für andere Sites sein, die die REPL einbetten, beispielsweise um Markdown F#-Tutorials mit Ergebnisauswertung zu erstellen.

Es sollte nicht allzu kompliziert sein, die Infrastruktur zu erstellen, aber es ist etwas Arbeit, ich werde versuchen, nächste Woche zu beginnen, da ich wahrscheinlich (die einzige?) Person bin, die weiß, wie man alle Teile zusammenfügt ;)

cc @ncave @MangelMaxime @whitetigle @tpetricek

enhancement

Hilfreichster Kommentar

@alfonsogarciacaro Natürlich nicht, das heißt nicht, dass ich nicht folge ;)
Ich war nur ein Scherz, wer es (wahrscheinlich) schon wissen will, weiß es, wenn er dir auf GitHub folgt.

Nächster Schritt -> zum Mond! (Ich meine, F#-Projekte in REPL, Hinweis Hinweis Ellbogenjab ;)

Alle 12 Kommentare

Ich füge @Krzysztof-Cieslak in die Diskussion ein.

Die React-Komponente für den Monaco-Editor für F#-Code.

Würde mich auch dafür interessieren, ich habe viel Code gestohlen, damit Monaco im AST-Viewer funktioniert 😅. Obwohl ich mich frage, ob es sinnvoller ist, eine Art von Fable.Import.Monaco zu haben.

Bitte ping mich, wenn es fertig ist. Ich würde Fable gerne in -Leute Blog-Posts und Tutorials mit interaktiven Code-Snippets schreiben können.

Dies ist abgeschlossen :) Jetzt sind Assemblys, die zum Kompilieren von F#-Projekten mit Fable erforderlich sind, im npm-Paket fable-metadata verfügbar, während FCS + Fable, die zu JS kompiliert sind, in fable-standalone zusammen mit einem Webworker ausgeliefert werden die in eine Website eingebettet werden können.

Fable REPL hängt bereits von diesen Paketen ab. Anleitung ist ungefähr so:

  • Kopieren Sie den Inhalt von fable-metadata/lib und fable-standalone/dist dorthin, wo Sie Ihre statischen Dateien bereitstellen: Beispiel
  • Fügen Sie in Ihrem Projekt einen Verweis auf diese Dateien hinzu (Namespaces Fable.Standalone bzw. Fable.WebWorker ):
fable-standalone/src/Interfaces.fs
fable-Standalone/src/Worker/Shared.fs
  • Starten Sie den Webworker mit einigen Informationen (vor allem, wo die Metadaten-Assemblys zu finden sind).

  • Überprüfen Sie die Datei src/App/Main.fs und sehen Sie sich die Worker-Nachrichten an, um zu erfahren, wie Sie mit dem Worker interagieren.

@alfonsogarciacaro Das war eine tolle Überarbeitung und Vereinfachung des Repos! Kann den Blogpost/Tweet kaum erwarten :)

Super Arbeit von euch allen 🎉

@ncave Aber Sie haben keinen Twitter-Account, oder? ;) TBH, ich bin etwas besorgt, dies zu öffentlich zu machen, weil es immer noch nicht trivial ist, den generierten Code auszuführen, und ich fürchte, wenn Leute versuchen, die REPL in ihre Sites einzubetten, werden viele weitere Probleme zu lösen sein :/

@alfonsogarciacaro Natürlich nicht, das heißt nicht, dass ich nicht folge ;)
Ich war nur ein Scherz, wer es (wahrscheinlich) schon wissen will, weiß es, wenn er dir auf GitHub folgt.

Nächster Schritt -> zum Mond! (Ich meine, F#-Projekte in REPL, Hinweis Hinweis Ellbogenjab ;)

Ich würde gerne F# auf Klipse (js-Plugin zur Codeauswertung) genauso unterstützen, wie Klipse LISP , Clojure und ruby unterstützt .

Dazu benötige ich eine einfache Anleitung:

  1. Eine einzelne gebündelte js-Datei
  2. Eine Bewertungsfunktion.

@viebel Die Anweisungen, um dies zu erreichen, befinden sich im Kommentar oben . Ich kann Ihnen helfen, sie auf den Aufruf einer eval-Funktion (und wahrscheinlich einer init-Funktion am Anfang) zu reduzieren, aber bitte beachten Sie, dass die Benutzererfahrung ohne den Webworker nicht schön sein wird, da die Klipse-Benutzeroberfläche einfriert, während der Compiler geladen oder kompiliert wird.

@alfonsogarciacaro Ich

Bitte helfen Sie mir, die Anweisungen auf einen init + eval-Funktionsaufruf zu reduzieren

Wird geschlossen, da wir derzeit keine Ressourcen für die REPL zuweisen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

et1975 picture et1975  ·  3Kommentare

ncave picture ncave  ·  3Kommentare

MangelMaxime picture MangelMaxime  ·  3Kommentare

et1975 picture et1975  ·  3Kommentare

tomcl picture tomcl  ·  4Kommentare