Preciso de algo como heredoc em JavaScript. Você tem alguma ideia para isso? Preciso da funcionalidade para vários navegadores.
Eu achei isto:
heredoc = '\
<div>\
<ul>\
<li><a href="#zzz">zzz</a></li>\
</ul>\
</div>';
Acho que vai funcionar para mim. :)
javascript
heredoc
VeroLom
fonte
fonte
Respostas:
Tente ES6 String Template , você pode fazer algo como
Você pode usar este ótimo recurso hoje com 6to5 ou TypeScript
fonte
Não, infelizmente o JavaScript não oferece suporte a nada como heredoc.
fonte
Que tal agora:
Basta substituir "/ * AQUI" e "AQUI * /" pela palavra de sua escolha.
fonte
*/
em seu heredoc.Com base na resposta de Zv_oDD, criei uma função semelhante para facilitar a reutilização.
Aviso: Este é um recurso não padrão de muitos interpretadores JS e provavelmente será removido em algum momento, mas como estou construindo um script para ser usado apenas no Chrome, estou usando-o! Não sempre contar com isso para websites dirigidos ao cliente!
Usar:
Retorna:
Notas:
Editar% s:
02/02/2014 - alterado para não mexer no protótipo de Função de forma alguma e usar o nome heredoc.
26/05/2017 - espaço em branco atualizado para refletir os padrões de codificação modernos.
fonte
Dependendo de qual tipo de mecanismo JS / JS você está executando (SpiderMonkey, AS3), você pode simplesmente escrever XML embutido, no qual você pode colocar texto em várias linhas, como heredoc:
fonte
ES6 Template Strings tem recurso heredoc.
Você pode declarar strings delimitadas por back-tick (``) e podem ser expandidas por várias linhas.
Você também pode incluir expressões dentro de Template Strings. Eles são indicados pelo sinal de dólar e chaves (
${expression}
).Na verdade, há mais recursos, como Tagged Temple Strings e Raw Strings. Encontre a documentação em
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings
fonte
Sinto-me mal por escrever uma resposta separada meramente como uma extensão da resposta de @NateFerrero , mas também não acho que editar a resposta dele seja apropriado, portanto, vote positivamente em @NateFerrero se esta resposta foi útil para você.
tl; dr — Para aqueles que desejam usar comentários em bloco dentro de seu heredoc ...
Eu precisava principalmente de heredocs Javascript para armazenar um bloco de CSS, por exemplo
Como você pode ver, no entanto, gosto de comentar meu CSS e, infelizmente (conforme sugerido pelo realce de sintaxe), o primeiro
*/
finaliza o comentário geral, quebrando o heredoc.Para este propósito específico (CSS), minha solução alternativa foi adicionar
à corrente dentro de @NateFerrero's
heredoc
; na forma completa:e use-o adicionando um espaço entre
*
e/
para comentários de bloco "internos", como:O
replace
simplesmente localiza/* ... * /
e remove o espaço para fazer/* ... */
, preservando assim o heredoc até ser chamado.Você pode, é claro, remover todos os comentários usando
Você também pode oferecer suporte a
//
comentários se adicioná-los à rede:Além disso, você pode fazer algo diferente do único espaço entre
*
e/
, como-
:se você apenas atualizar o regex apropriadamente:
Ou talvez você queira uma quantidade arbitrária de espaços em branco em vez de um único espaço?
fonte
Você pode usar CoffeeScript , uma linguagem que compila em JavaScript. O código compila um a um no JS equivalente e não há interpretação no tempo de execução.
E, claro, tem heredocos :)
fonte
ES5 e versões anteriores
ES6 e versões posteriores
resultado
fonte
Você pode usar as macros Sweet.js para adicioná-lo assim, conforme criado por Tim Disney neste post
Observe que essa abordagem usa crases como delimitadores de string em vez disso:
fonte
Como já foi dito, as strings de template ES6 oferecem muito do que os heredocs tradicionais fornecem.
Se você quiser dar um passo adiante e usar uma string de modelo com tag,
theredoc
é uma boa função de utilitário que permite fazer isso:fonte
Se você tiver algum html e jQuery em mãos e a string for HTML válido, isso pode ser útil:
Se o texto tiver comentários "<! - ->" entre eles, também funcionará, mas uma parte do texto pode estar visível. Aqui está o violino: https://jsfiddle.net/hr6ar152/1/
fonte
exemplo
com cache: - crie uma função de modelo simples e salve a função: (a segunda vez funciona rápido)
fonte
Estou postando esta versão porque evita o uso de regex para algo tão trivial.
IMHO regex é uma ofuscação que foi criada como uma piada entre os desenvolvedores de perl. o resto da comunidade os levou a sério e agora pagamos o preço, décadas depois. não use regex, exceto para compatibilidade com versões anteriores com código legado. não há desculpa hoje em dia para escrever código que não seja imediatamente legível e compreensível por humanos. regex viola este princípio em todos os níveis.
Também adicionei uma maneira de adicionar o resultado à página atual, não que isso tenha sido solicitado.
fonte