J'ai besoin de quelque chose comme heredoc en JavaScript. Avez-vous des idées pour cela? J'ai besoin d'une fonctionnalité multi-navigateurs.
J'ai trouvé ça:
heredoc = '\
<div>\
<ul>\
<li><a href="#zzz">zzz</a></li>\
</ul>\
</div>';
Je pense que cela fonctionnera pour moi. :)
javascript
heredoc
VeroLom
la source
la source
Réponses:
Essayez le modèle de chaîne ES6 , vous pouvez faire quelque chose comme
Vous pouvez utiliser cette excellente fonctionnalité aujourd'hui avec 6to5 ou TypeScript
la source
Non, malheureusement, JavaScript ne prend en charge rien de tel que heredoc.
la source
Que dis-tu de ça:
Remplacez simplement "/ * ICI" et "ICI * /" par le mot de votre choix.
la source
*/
dans votre heredoc.En me basant sur la réponse de Zv_oDD, j'ai créé une fonction similaire pour une réutilisation plus facile.
Attention: il s'agit d'une fonctionnalité non standard de nombreux interpréteurs JS, et sera probablement supprimée à un moment donné, mais comme je suis en train de créer un script à utiliser uniquement dans Chrome, je l'utilise! Ne vous fiez jamais à cela pour les sites Web destinés aux clients!
Utilisation:
Retour:
Remarques:
Modifications:
2/2/2014 - changé pour ne pas jouer du tout avec le prototype Function et utiliser le nom heredoc à la place.
26/05/2017 - espace blanc mis à jour pour refléter les normes de codage modernes.
la source
En fonction de la saveur du moteur JS / JS que vous utilisez (SpiderMonkey, AS3), vous pouvez simplement écrire du XML en ligne, dans lequel vous pouvez placer du texte sur plusieurs lignes, comme heredoc:
la source
ES6 Template Strings a la fonction heredoc.
Vous pouvez déclarer des chaînes encadrées par un back-tick (``) et peuvent être développées sur plusieurs lignes.
Vous pouvez également inclure des expressions dans des chaînes de modèle. Ceux-ci sont indiqués par le signe dollar et des accolades (
${expression}
).Il y a en fait plus de fonctionnalités telles que Tagged Temple Strings et Raw Strings. Veuillez trouver la documentation sur
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings
la source
Je me sens mal d'écrire une réponse séparée pour simplement une extension de la réponse de @ NateFerrero , mais je ne pense pas que la modification de sa réponse soit appropriée non plus, alors veuillez voter @NateFerrero si cette réponse vous a été utile.
tl; dr - Pour ceux qui souhaitent utiliser des commentaires en bloc dans leur heredoc ...
J'avais principalement besoin de heredocs Javascript pour stocker un bloc de CSS, par exemple
Comme vous pouvez le voir cependant, j'aime commenter mon CSS, et malheureusement (comme l'indique la coloration syntaxique) le premier
*/
termine le commentaire global, cassant l'hérédoc.Dans ce but précis (CSS), ma solution de contournement était d'ajouter
à la chaîne à l'intérieur de @ NateFerrero
heredoc
; sous forme complète:et utilisez-le en ajoutant un espace entre le
*
et/
pour les commentaires du bloc "interne", comme ceci:Le
replace
trouve/* ... * /
et supprime simplement l'espace à faire/* ... */
, préservant ainsi l'hérédoc jusqu'à l'appel.Vous pouvez bien sûr supprimer complètement les commentaires en utilisant
Vous pouvez également prendre en charge les
//
commentaires si vous les ajoutez à la chaîne:En outre, vous pouvez faire autre chose que l'espace unique entre
*
et/
, comme un-
:si vous mettez simplement à jour l'expression régulière de manière appropriée:
Ou peut-être souhaitez-vous une quantité arbitraire d'espaces blancs au lieu d'un seul espace?
la source
Vous pouvez utiliser CoffeeScript , un langage qui se compile en JavaScript. Le code compile un à un dans le JS équivalent, et il n'y a pas d'interprétation au moment de l'exécution.
Et bien sûr, il a heredocs :)
la source
ES5 et versions antérieures
ES6 et versions ultérieures
résultat
la source
Vous pouvez utiliser les macros Sweet.js pour l'ajouter comme tel, comme créé par Tim Disney dans cet article
Notez que cette approche utilise à la place des backticks comme séparateurs de chaîne:
la source
Comme d'autres l'ont dit, les chaînes de modèles ES6 vous donnent la plupart de ce que les heredocs traditionnels fournissent.
Si vous souhaitez aller plus loin et utiliser une chaîne de modèle balisée,
theredoc
est une fonction utilitaire intéressante qui vous permet de faire ceci:la source
Si vous avez du HTML et du jQuery sous la main et que la chaîne est du HTML valide, cela peut être utile:
Si le texte contient des commentaires «<! - ->» entre les deux, cela fonctionne également, mais une partie du texte peut être visible. Voici le violon: https://jsfiddle.net/hr6ar152/1/
la source
exemple
avec cache: - créer une fonction de modèle simple et enregistrer la fonction: (la deuxième fois fonctionne rapidement)
la source
Je poste cette version car elle évite l'utilisation de regex pour quelque chose d'aussi trivial.
IMHO regex est une obfuscation qui a été créée comme une blague pratique parmi les développeurs perl. le reste de la communauté les a pris au sérieux et nous en payons maintenant le prix, des décennies plus tard. n'utilisez pas de regex, sauf pour la compatibilité descendante avec le code hérité. il n'y a aucune excuse de nos jours pour écrire du code qui n'est pas immédiatement lisible et compréhensible par l'homme. regex viole ce principe à tous les niveaux.
J'ai également ajouté un moyen d'ajouter le résultat à la page actuelle, non pas que cela ait été demandé.
la source