Fable: Déplacer les composants REPL vers ce référentiel

Créé le 27 nov. 2018  ·  12Commentaires  ·  Source: fable-compiler/Fable

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 travailleur Web REPL qui peut recevoir des messages à compiler, fournir des info-bulles, etc.
  • Les métadonnées (System.dll et autres) + les assemblys Fable.Repl.Lib (et les fichiers JS précompilés) qui doivent être référencés pour la compilation
  • Le composant React pour l'éditeur Monaco pour le code F#.

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

enhancement

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 ;)

Tous les 12 commentaires

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 :

  • Copiez le contenu de fable-metadata/lib et fable-standalone/dist là où vous servez vos fichiers statiques : exemple
  • Ajoutez une référence à ces fichiers dans votre projet (espaces Fable.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 ;)

J'aimerais prendre en charge F# sur Klipse (plugin js pour l'évaluation du code) de la même manière que Klipse prend en charge LISP , Clojure et ruby .

Pour cela, j'ai besoin d'instructions simples à suivre :

  1. Un seul fichier js groupé
  2. Une fonction d'évaluation.

@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.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

nozzlegear picture nozzlegear  ·  3Commentaires

krauthaufen picture krauthaufen  ·  3Commentaires

forki picture forki  ·  3Commentaires

alfonsogarciacaro picture alfonsogarciacaro  ·  3Commentaires

SirUppyPancakes picture SirUppyPancakes  ·  3Commentaires