Aqui é só um desabafo, mas, tendo usado mais linguagens de template do que eu gostaria de lembrar (Jinja2, ERB, FTL, XSLT, JSX, Handlebars, etc.), acho Hyperscript simplesmente horrível de trabalhar.
Sem ordem específica, os problemas que ele causa incluem:
Portabilidade do código (não é possível copiar/colar trechos de HTML sem passá-los por um conversor)
Realce de sintaxe (transforma tudo em um grande amontoado), por exemplo:
Sim, concordo que não é o melhor para trabalhar, especialmente em comparação com o Handlebars (que também usamos), onde você pode escrever HTML como espera.
Começamos a usar virtual-dom/virtual-hyperscript em lugares onde precisávamos melhorar o desempenho. O tópico de nossos múltiplos sistemas de template tem sido algo que começamos a discutir dentro da equipe recentemente; ainda não temos planos concretos, mas percebemos que seria uma boa ideia simplificar. Talvez isso signifique que não usaremos mais virtual-hyperscript? O tempo dirá.
A sintaxe é um pouco estranha para se acostumar. Lembro-me de ter ficado bastante confuso com ela quando comecei a escrever temas para o Discourse, mas acabei entendendo como funciona. Também é possível gerar HTML bruto por meio de widgets.
Não sou o mais habilidoso para dizer quando e onde usar cada coisa, mas é uma opção a considerar se você está fazendo algum trabalho personalizado, precisa criar um widget e está tendo dificuldade em usar o virtual-hyperscript.
Isso vale a pena saber — obrigado! Passei uma hora ou duas reescrevendo manualmente fragmentos de HTML, mas entre isso e o html2hyperscript, tenho algumas opções para explorar
Interessante… Eu achava que uma das grandes vantagens do Ember era a velocidade do GlimmerVM. O desempenho do virtual-dom é realmente tão superior ao do Glimmer?
Entendi. Essa linha do tempo ajuda — obrigado! Então, supõe-se que o caminho mais fácil seria esperar até que o desempenho do Glimmer seja equivalente ao do virtual-dom, descartá-lo e voltar ao Ember puro?
Essa funcionalidade é legal, mas estou tendo algumas dificuldades para fazê-la funcionar. Já fiz o require de discourse/widgets/hbs-compiler, mas ainda recebo o erro: hbs não é uma função
Temos algumas discussões em andamento sobre como racionalizar nossos sistemas de template. Vou analisar isso e responder à sua questão específica nos próximos dias.
Sim. A transição pode ser um pouco complicada. Em princípio, poderíamos criar o equivalente reverso do html2hyperscript, mas, na prática, a maior parte do hyperscript provavelmente estará tão entrelaçada com o JS do widget que isso poderia rapidamente se tornar um pesadelo.
Acho que a solução mais simples é manter o suporte ao hyperscript por um tempo e, talvez, descontinuá-lo mais tarde.
Eu diria, na verdade, exatamente o oposto: ter racionalizado nosso uso de templates antes do Octane nos ajudará a migrar para a sintaxe de ângulo (angle bracket) com mais facilidade quando desejarmos.
@edL Vejo withPluginApi no seu backtrace — você está tentando usar o compilador hbs dentro de uma tag <script> de um tema? Infelizmente, o compilador Handlebars de widgets não funciona nesse cenário.
Você precisa definir o widget em um módulo separado usando as instruções import que @j.jaffeux incluiu acima. Você pode fazer isso em um tema usando o suporte a JavaScript multiarquivo.