EDITAR : J'ai réalisé un tout petit module NPM avec cet utilitaire. Il fonctionne sur le web et dans Node et je le recommande fortement par rapport au code dans ma réponse ci-dessous car il est beaucoup plus robuste. Il permet également de préserver les nouvelles lignes dans le résultat si vous les saisissez manuellement en tant que \n
et fournit des fonctions pour les cas où vous utilisez déjà les balises littérales des modèles pour autre chose : https://github.com/iansan5653/compress-tag
Je sais que je suis en retard pour répondre ici, mais la réponse acceptée a toujours l'inconvénient de ne pas permettre les indentations après le saut de ligne, ce qui signifie que vous ne pouvez toujours pas écrire un code très joli juste en échappant les nouvelles lignes.
Au lieu de cela, pourquoi ne pas utiliser un fonction littérale de modèle balisé ?
function noWhiteSpace(strings, ...placeholders) {
// Build the string as normal, combining all the strings and placeholders:
let withSpace = strings.reduce((result, string, i) => (result + placeholders[i - 1] + string));
let withoutSpace = withSpace.replace(/\s\s+/g, ' ');
return withoutSpace;
}
Ensuite, vous pouvez simplement marquer n'importe quel littéral de modèle dans lequel vous voulez avoir des sauts de ligne :
let myString = noWhiteSpace`This is a really long string, that needs to wrap over
several lines. With a normal template literal you can't do that, but you can
use a template literal tag to allow line breaks and indents.`;
Cela présente l'inconvénient d'avoir un comportement inattendu si un futur développeur n'est pas habitué à la syntaxe des modèles balisés ou si vous n'utilisez pas un nom de fonction descriptif, mais cela semble être la solution la plus propre pour le moment.
4 votes
Pour info, les suites de lignes sont difficiles à lire et fragiles face aux espaces inattendus, je préfère donc la solution de Monte Jones à celle de Codingintrigue. Pour info, le guide de style de Google recommande la solution Monte Jones et le guide AirBnB recommande en utilisant simplement une très longue ligne à la place - c'est-à-dire qu'aucun des deux ne recommande les continuations de ligne. D'ailleurs, je n'ai pas trouvé ce sujet dans une vérification rapide des autres guides de style.