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 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
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.
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:
fable-metadata/lib
und fable-standalone/dist
dorthin, wo Sie Ihre statischen Dateien bereitstellen: BeispielFable.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:
@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.
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 ;)