Nous avons parlé plusieurs fois de la composante de la REPL. J'ai pensé à créer un autre référentiel pour héberger ces composants de base. Mais étant donné que nous générons déjà la compilation FCS + Fable JS ici et que nous avons besoin de certaines parties pour d'autres packages (comme les assemblages de métadonnées pour fable-compiler-js), il est probablement plus simple de générer les composants ici et de les extraire d'autres dépôts. .
Donc l'idée est de mettre ici :
Le fable-compiler/repl doit extraire ces composants et fournir le reste de l'interface utilisateur et du comportement. Il servira également de base à d'autres sites qui embarquent le REPL, par exemple pour créer des tutoriels Markdown F# avec évaluation des résultats.
Cela ne devrait pas être trop compliqué de créer l'infrastructure mais c'est du travail, j'essaierai de commencer la semaine prochaine, car je suis probablement (la seule ?) personne qui sait assembler toutes les pièces ensemble ;)
cc @ncave @MangelMaxime @whitetigle @tpetricek
J'ajoute @Krzysztof-Cieslak dans la discussion.
Le composant React pour l'éditeur Monaco pour le code F#.
Cela m'intéresserait aussi, j'ai volé beaucoup de code pour faire fonctionner Monaco dans la visionneuse AST 😅. Bien que je me demande s'il est plus logique d'avoir une sorte de Fable.Import.Monaco
.
S'il vous plaît ping moi quand c'est prêt. J'aimerais intégrer Fable à Klipse pour permettre aux utilisateurs de F# d'écrire des articles de blog et des didacticiels avec des extraits de code interactifs.
C'est terminé :) Désormais, les assemblys nécessaires à la compilation de projets F# avec Fable sont disponibles dans le package fable-metadata
npm, tandis que FCS + Fable compilés en JS sont expédiés dans fable-standalone
, avec un travailleur Web qui peut être intégré dans un site Web.
Fable REPL dépend déjà de ces packages. Les instructions sont plus ou moins comme ceci :
fable-metadata/lib
et fable-standalone/dist
là où vous servez vos fichiers statiques : exempleFable.WebWorker
noms Fable.Standalone
et Fable.WebWorker
respectivement) :fable-standalone/src/Interfaces.fs
fable-Standalone/src/Worker/Shared.fs
Démarrez le web worker avec quelques informations (surtout où les assemblys de métadonnées peuvent être trouvés).
Vérifiez le fichier src/App/Main.fs et consultez les messages du travailleur pour savoir comment interagir avec le travailleur.
@alfonsogarciacaro C'était une refonte et une simplification impressionnantes du repo ! J'attends avec impatience le billet de blog / tweet :)
Super travail de vous tous
@ncave Mais vous n'avez pas de compte Twitter, n'est-ce pas ? ;) TBH, je suis un peu inquiet de rendre cela trop public car ce n'est toujours pas trivial d' exécuter le code généré et j'ai peur que si les gens essaient d'intégrer le REPL dans leurs sites, il y aura beaucoup plus de problèmes à résoudre :/
@alfonsogarciacaro Bien sûr que non, cela ne veut pas dire que je ne suis pas ;)
Je plaisantais, quiconque veut savoir le sait déjà (probablement) en vous suivant sur GitHub.
Prochaine étape -> vers la Lune ! (Je veux dire, projets F# dans REPL, indice de coup de coude ;)
@viebel Les instructions pour y parvenir sont dans le commentaire ci-dessus . Je peux vous aider à les réduire à l'appel d'une fonction eval (et probablement d'une fonction d'initialisation au début), mais veuillez noter que sans le webworker, l'expérience utilisateur ne sera pas agréable car l'interface utilisateur de Klipse se bloquera pendant le chargement ou la compilation du compilateur.
@alfonsogarciacaro Je ne m'inquiète pas trop du gel de l'interface utilisateur de Klipse pendant la compilation, en supposant que cela prend moins de 300 ms pour les extraits de code court.
S'il vous plaît aidez-moi à réduire les instructions à un appel de fonction init + eval
Fermeture car nous n'allouons pas actuellement de ressources dans le REPL.
Commentaire le plus utile
@alfonsogarciacaro Bien sûr que non, cela ne veut pas dire que je ne suis pas ;)
Je plaisantais, quiconque veut savoir le sait déjà (probablement) en vous suivant sur GitHub.
Prochaine étape -> vers la Lune ! (Je veux dire, projets F# dans REPL, indice de coup de coude ;)