Dans les littéraux de modèle es6, comment peut-on envelopper un long littéral de modèle en multiligne sans créer une nouvelle ligne dans la chaîne?
Par exemple, si vous faites ceci:
const text = `a very long string that just continues
and continues and continues`
Ensuite, il créera un nouveau symbole de ligne dans la chaîne, en l'interprétant comme ayant une nouvelle ligne. Comment peut-on envelopper le long modèle littéral en plusieurs lignes sans créer la nouvelle ligne?
javascript
ecmascript-6
template-literals
Ville Miekk-oja
la source
la source
Réponses:
Si vous introduisez une ligne continuation (
\
) au point de la nouvelle ligne dans le littéral, cela ne créera pas de nouvelle ligne en sortie:la source
1.1k Airbnb library
and continues...
doit commencer à partir de la 0ème position sur la nouvelle ligne, rompant ainsi la règle de retrait.C'est un vieux. Mais c'est venu. Si vous laissez des espaces dans l'éditeur, il les y placera.
faites simplement le symbole normal +
la source
Vous pouvez simplement manger les sauts de ligne dans votre modèle littéral.
la source
prettier
) configuré dans votre IDE.prettier
enroule cela en une seule ligne.EDIT : J'ai fait un petit module NPM avec cet utilitaire. Cela fonctionne sur le Web et dans Node et je le recommande vivement sur le code de ma réponse ci-dessous car il est beaucoup plus robuste. Il permet également de conserver les nouvelles lignes dans le résultat si vous les saisissez manuellement comme
\n
, et fournit des fonctions lorsque vous utilisez déjà des balises littérales de modèle pour autre chose: https://github.com/iansan5653/compress-tagJe sais que je suis en retard pour répondre ici, mais la réponse acceptée a toujours l'inconvénient de ne pas autoriser les retraits après le saut de ligne, ce qui signifie que vous ne pouvez toujours pas écrire du code très beau simplement en échappant aux nouvelles lignes.
Au lieu de cela, pourquoi ne pas utiliser une fonction littérale de modèle étiqueté ?
Ensuite, vous pouvez simplement marquer n'importe quel littéral de modèle dans lequel vous souhaitez avoir des sauts de ligne:
Cela présente l'inconvénient d'avoir un comportement inattendu si un futur développeur n'est pas habitué à la syntaxe du modèle étiqueté ou si vous n'utilisez pas de nom de fonction descriptif, mais cela semble être la solution la plus propre pour le moment.
la source
Une autre option consiste à utiliser
Array.join
, comme ceci:la source
Utilisez l'ancien et le nouveau. Les modèles littéraux sont excellents, mais si vous voulez éviter les longs littéraux afin d'avoir des lignes de code compactes, concaténez-les et ESLint ne causera pas de problème.
la source
Similaire à la réponse de Doug, cela est accepté par ma configuration TSLint et reste intact par mon formateur automatique IntelliJ:
la source
La solution proposée par @CodingIntrigue ne fonctionne pas pour moi sur le nœud 7. Bon, ça marche si je n'utilise pas de continuation de ligne sur la première ligne, ça échoue sinon.
Ce n'est probablement pas la meilleure solution, mais cela fonctionne sans problème:
la source