Comment interpoler des variables dans les chaînes de caractères en JavaScript, sans concaténation?
Je connais en PHP, nous pouvons faire quelque chose comme ceci:
$hello = "foo";
$my_string = "I pity the $hello";
De sortie: "I pity the foo"
Je me demandais si cette même chose est possible en JavaScript ainsi. À l'aide de variables à l'intérieur de chaînes sans utiliser la concaténation — il a l'air plus concise et élégante à écrire.
Vous devez vous connecter pour publier un commentaire.
À partir de Firefox 34 /Chrome 41 /Safari 9 /Microsoft Bord, vous pouvez utiliser un ES2015 /ES6 fonctionnalité appelée Modèle De Littéraux et d'utiliser cette syntaxe:
Exemple:
Comment bien c'est qu'?
Bonus:
Il permet également de multi-ligne de chaînes de caractères en javascript sans s'échapper, ce qui est excellent pour les modèles:
Prise en charge du navigateur:
Que cette syntaxe n'est pas pris en charge par les anciens navigateurs (Internet Explorer et Safari <= 8), vous souhaiterez peut-être utiliser Babel à transpile votre code dans l'ES5 pour vous assurer qu'il fonctionnera partout.
Note de côté:
À partir de IE8+, vous pouvez utiliser de base de la chaîne de mise en forme à l'intérieur de
console.log
:"${foo}"
est littéralement ${foo}`${foo}`
est ce que vous voulez vraimentFifteen is ${a + b}.
); n'a pas changé de façon dynamique. il montre toujours les Quinze est de 15.Avant Firefox 34 /Chrome 41 /Safari 9 /Microsoft Bord, non, ce n'était pas possible en javascript. Vous devez recourir à:
Avant Firefox 34 /Chrome 41 /Safari 9 /Microsoft Bord, pas de. Bien que vous pouvez essayer sprintf pour JavaScript pour obtenir à mi-chemin:
eh bien, vous pourriez faire, mais ce n'est pas esp général
Vous pouvez facilement écrire une fonction qui fait cela de façon intelligente si vous avez vraiment besoin de
Si vous aimez écrire CoffeeScript que vous pouvez faire:
CoffeeScript EST en fait en javascript, mais avec une bien meilleure syntaxe.
Pour un aperçu de CoffeeScript cochez cette guide du débutant.
Réponse complète, prête à être utilisée:
Appel
Pour l'attacher à la Corde.prototype:
Pour ensuite les utiliser comme :
Vous pouvez utiliser cette fonction javascript pour faire ce genre de templating. Pas besoin d'inclure une bibliothèque entière.
Sortie:
"I would like to receive email updates from this store FOO BAR BAZ."
À l'aide d'une fonction comme argument à la Chaîne.fonction de remplacement() faisait partie de l'ECMAScript v3 spec. Voir cette SORTE de réponse pour plus de détails.
Si vous essayez de faire de l'interpolation pour microtemplating, j'aime Mustache.js à cette fin.
J'ai écrit ce package npm stringinject https://www.npmjs.com/package/stringinject qui vous permet d'effectuer les opérations suivantes
qui remplacera le {0} et {1}, avec les éléments de tableau et de retourner à la chaîne suivante
ou vous pouvez remplacer les espaces réservés à l'objet des clés et des valeurs comme:
Ne vois pas de bibliothèques externes mentionnés ici, mais Lodash a
_.template()
,https://lodash.com/docs/4.17.10#template
Si vous êtes déjà fait usage de la bibliothèque, il vaut la peine de vérifier, et si vous n'êtes pas faire usage de Lodash vous pouvez toujours cherry pick méthodes de mnp
npm install lodash.template
de sorte que vous pouvez couper les frais généraux.Forme la plus simple -
Il y a un tas d'options de configuration aussi -
J'ai trouvé personnalisé délimiteurs plus intéressant.
Osu: