Avec la montée en puissance de node.js, les chaînes multilignes deviennent de plus en plus nécessaires en JavaScript.
- Existe-t-il un moyen spécial de le faire dans Node.JS, même si cela ne fonctionne pas dans les navigateurs?
- Existe-t-il des plans ou au moins une demande de fonctionnalité pour ce faire que je peux prendre en charge?
Je sais déjà que vous pouvez utiliser \n\
à la fin de chaque ligne, ce n'est pas ce que je veux.
print( '<div>')
pour imprimer mon HTML. Il n'a ni tabulations ni retours, ce qui est "soigné", mais il serait plus facile d'utiliser une<<EOF..EOF
chaîne de style Perl ou un fichier JSP de style Java. Quoi qu'il en soit, je dois être capable de saisir des variables dans la chaîne multiligne quand il s'agit. Je vais m'en passer pour l'instant.\n
implémentations, donc ... ce sont plutôt des navigateurs.Réponses:
node v4 et versions actuelles de node
Depuis ES6 (et donc les versions de Node supérieures à v4), un nouveau type intrinsèque "template literal" a été ajouté à Javascript (indiqué par back-ticks "` ") qui peut également être utilisé pour construire des chaînes multilignes, comme dans :
qui évalue à:
'this is a\nsingle string'
.Notez que la nouvelle ligne à la fin de la première ligne est incluse dans la chaîne résultante.
Des modèles de littéraux ont été ajoutés pour permettre aux programmeurs de construire des chaînes dans lesquelles des valeurs ou du code pourraient être directement injectés dans un littéral de chaîne sans avoir à utiliser
util.format
ou d'autres modèles, comme dans:qui affichera "le résultat de 10 plus 10 est 20." à la console.
Anciennes versions de node
La version plus ancienne de node peut utiliser un caractère de "continuation de ligne" vous permettant d'écrire des chaînes multilignes telles que:
qui évalue à:
'this is a single string'
.Notez que la nouvelle ligne à la fin de la première ligne n'est pas incluse dans la chaîne résultante.
la source
Les chaînes multilignes font actuellement partie de JavaScript (depuis ES6) et sont prises en charge dans node.js v4.0.0 et plus récent.
la source
Que recherchez-vous exactement lorsque vous parlez de chaînes multilignes.
Cherchez-vous quelque chose comme:
Qui serait imprimé comme "Some String Here"?
Si tel est le cas, gardez à l'esprit que ce qui précède est du Javascript valide, mais ce n'est pas le cas:
Quelle est la différence? Un espace après le
\
. Amusez-vous à déboguer cela.la source
Jetez un œil au module mstring pour node.js.
Remarque: le module (à partir du 2012/13/11) n'autorise pas les espaces avant la fermeture
***/
, vous devrez donc le pirater vous-même.la source
En plus de ce que les gens ont posté ici, j'ai entendu dire que la concaténation peut être beaucoup plus rapide que de se joindre à des vms javascript modernes. Sens:
Sera plus lent que:
Dans certains cas. http://jsperf.com/string-concat-versus-array-join/3
En passant, je trouve que c'est l'une des fonctionnalités les plus attrayantes de Coffeescript . Oui, oui, je sais, les haineux vont détester.
C'est particulièrement bien pour les extraits html. Je ne dis pas que c'est une raison de l'utiliser, mais je souhaite qu'il atterrisse en pays ecma :-(.
Josh
la source
.coffee
à.js
, les numéros de ligne sont mélangés. Je n'ai pas essayé CoffeeScript, mais quand j'ai essayé Groovy, j'ai trouvé assez difficile de déboguer sans obtenir les.java
fichiers générés .Jetez un œil à CoffeeScript: http://coffeescript.org
Il prend en charge les chaînes multi-lignes, l'interpolation, les compréhensions de tableaux et beaucoup d'autres choses intéressantes.
la source
Si vous utilisez io.js, il prend en charge les chaînes multilignes comme dans ECMAScript 6.
Voir «Nouvelles méthodes de chaîne» sur http://davidwalsh.name/es6-io pour plus de détails et «chaînes de modèle» sur http://kangax.github.io/compat-table/es6/ pour le suivi de la compatibilité.
la source
En plus de la réponse acceptée:
qui s'évalue comme suit: 'ceci est une \ nsingle string'.
Si vous souhaitez utiliser l'interpolation de chaîne mais sans nouvelle ligne, ajoutez simplement une barre oblique inverse comme dans une chaîne normale:
=> 'ceci est une seule chaîne'.
Gardez à l'esprit que les espaces manuels sont nécessaires:
=> 'ceci est une chaîne unique'
la source
Vanilla Javascipt ne prend pas en charge les chaînes multilignes. Les pré-processeurs linguistiques s'avèrent réalisables ces jours-ci.
CoffeeScript, le plus populaire d'entre eux a cette fonctionnalité, mais ce n'est pas minime, c'est un nouveau langage. Le compilateur traceur de Google ajoute de nouvelles fonctionnalités au langage en tant que sur-ensemble, mais je ne pense pas que les chaînes multilignes soient l'une des fonctionnalités ajoutées.
Je cherche à créer un sur-ensemble minimal de javascript qui prend en charge les chaînes multilignes et quelques autres fonctionnalités. J'ai commencé ce petit langage il y a quelque temps avant d'écrire le compilateur initial pour coffeescript. J'ai l'intention de le terminer cet été.
Si les pré-compilateurs ne sont pas une option, il existe également le hack de balises de script où vous stockez vos données multilignes dans une balise de script dans le html, mais donnez-lui un type personnalisé afin qu'il ne soit pas évalué. Ensuite, en utilisant javascript, vous pouvez extraire le contenu de la balise de script.
De plus, si vous mettez un \ à la fin d'une ligne dans le code source, cela entraînera l'ignorance de la nouvelle ligne comme si elle n'était pas là. Si vous voulez la nouvelle ligne, vous devez terminer la ligne par "\ n \".
la source