Fable: Mova os componentes REPL para este repositório

Criado em 27 nov. 2018  ·  12Comentários  ·  Fonte: fable-compiler/Fable

Já falamos várias vezes sobre como componentizar o REPL. Estou pensando em criar um repo diferente para hospedar esses componentes principais. Mas dado que já estamos gerando a compilação FCS + Fable JS aqui e precisamos de algumas partes para outros pacotes (como os assemblies de metadados para fable-compiler-js), é provavelmente mais simples se gerarmos os componentes aqui e retirá-los de outros repositórios .

Então a ideia é colocar aqui:

  • O trabalhador da web REPL que pode receber mensagens para compilar, fornecer dicas de ferramentas, etc.
  • Os metadados (System.dll e outros) + assemblies Fable.Repl.Lib (e arquivos JS pré-compilados) que devem ser referenciados para a compilação
  • O componente React para o editor Monaco para código F #.

O fable-compiler / repl deve extrair esses componentes e fornecer o restante da IU e do comportamento. Também será a base para outros sites que incorporam o REPL, por exemplo, para criar tutoriais Markdown F # com avaliação de resultados.

Não deve ser muito complicado criar a infraestrutura, mas dá trabalho, tentarei começar na próxima semana, pois provavelmente sou (a única?) Pessoa que sabe como encaixar todas as peças;)

cc @ncave @MangelMaxime @whitetigle @tpetricek

enhancement

Comentários muito úteis

@alfonsogarciacaro Claro que não, isso não quer dizer que não sigo;)
Eu só estava brincando, quem quiser saber já (provavelmente) sabe por te seguir no GitHub.

Próximo passo -> para a Lua! (Quero dizer, projetos F # em REPL, hint hint cotovelo jab ;)

Todos 12 comentários

Estou adicionando @ Krzysztof-Cieslak na discussão.

O componente React para o editor Monaco para código F #.

Também estaria interessado nisso, roubei muito código para fazer o Monaco funcionar no visualizador AST 😅. Embora eu me pergunte se faz mais sentido ter um tipo de coisa Fable.Import.Monaco .

Por favor, me envie um ping quando estiver pronto. Adoraria integrar o Fable com o Klipse para permitir que o pessoal do F # escrevesse postagens de blog e tutoriais com trechos de código interativos.

Isso está completo :) Agora os assemblies necessários para compilar projetos F # com Fable estão disponíveis no pacote fable-metadata npm, enquanto FCS + Fable compilado para JS estão sendo enviados em fable-standalone , junto com um trabalhador da web que pode ser incorporado em um site.

Fable REPL já depende desses pacotes. As instruções são mais ou menos assim:

  • Copie o conteúdo de fable-metadata/lib e fable-standalone/dist para onde quer que você esteja exibindo seus arquivos estáticos: exemplo
  • Adicione uma referência a esses arquivos em seu projeto ( Fable.Standalone e Fable.WebWorker namespaces respectivamente):
fable-standalone/src/Interfaces.fs
fable-Standalone/src/Worker/Shared.fs
  • Inicie o web worker com algumas informações (mais importante, onde os assemblies de metadados podem ser encontrados).

  • Verifique o arquivo src / App / Main.fs e veja as mensagens do trabalhador para saber como interagir com o trabalhador.

@alfonsogarciacaro Esse foi um ótimo retrabalho e simplificação do repo! Mal posso esperar pela postagem / tweet do blog :)

Excelente trabalho de todos vocês 🎉

@ncave Mas você não tem uma conta no Twitter, ou tem? ;) TBH, estou um pouco preocupado em tornar isso muito público porque ainda não é trivial executar o código gerado e temo que se as pessoas tentarem incorporar o REPL em seus sites, haverá muitos outros problemas para resolver: /

@alfonsogarciacaro Claro que não, isso não quer dizer que não sigo;)
Eu só estava brincando, quem quiser saber já (provavelmente) sabe por te seguir no GitHub.

Próximo passo -> para a Lua! (Quero dizer, projetos F # em REPL, hint hint cotovelo jab ;)

Eu adoraria oferecer suporte a F # no Klipse (plugin js para avaliação de código) da mesma forma que o Klipse oferece suporte a LISP , Clojure e ruby .

Para isso, preciso de instruções simples a seguir:

  1. Um único arquivo js empacotado
  2. Uma função eval.

@viebel As instruções para fazer isso estão no comentário acima . Eu posso ajudá-lo a reduzi-los a chamar uma função eval (e provavelmente uma função init no início), mas observe que sem o webworker a experiência do usuário não será boa porque a IU do Klipse irá congelar enquanto o compilador está carregando ou compilando.

@alfonsogarciacaro Não estou muito preocupado com o congelamento da IU do Klipse durante a compilação, presumindo que demore menos de 300 ms para trechos de código curtos.

Por favor me ajude a reduzir as instruções para uma chamada de função init + eval

Fechando porque não estamos alocando recursos no REPL.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

forki picture forki  ·  3Comentários

SirUppyPancakes picture SirUppyPancakes  ·  3Comentários

alfonsogarciacaro picture alfonsogarciacaro  ·  3Comentários

MangelMaxime picture MangelMaxime  ·  3Comentários

krauthaufen picture krauthaufen  ·  3Comentários