Défi :
Les développeurs trouvent souvent les littéraux de modèles ES6 inestimables pour l'interpolation de chaînes. Cependant, une frustration courante survient lorsque l'on tente de réutiliser ou d'évaluer ces littéraux au moment de l'exécution. Il semble que les substitutions doivent toujours être effectuées au moment de la déclaration, ce qui limite leur caractère pratique en tant que modèles.
Solution :
Pour surmonter cette limitation et créer des littéraux de modèles réutilisables qui peuvent être réutilisé et évalué dynamiquement, nous devons introduire une étape intermédiaire.
Utilisation du constructeur de fonction :
La clé de la réutilisabilité réside dans l'utilisation du constructeur de fonction pour envelopper le modèle chaîne. Ce faisant, nous transformons essentiellement le modèle en une fonction JavaScript qui peut être invoquée ultérieurement avec des valeurs de variable spécifiques.
<code class="js">const templateString = "Hello ${this.name}!"; const templateVars = { name: "world" }; const fillTemplate = function (templateString, templateVars) { return new Function("return `" + templateString + "`;").call(templateVars); }; console.log(fillTemplate(templateString, templateVars)); // Output: "Hello world!"</code>
Dans cet exemple, la fonction fillTemplate prend à la fois la chaîne du modèle et un objet variable comme arguments. . Il enveloppe le modèle dans une fonction, puis renvoie le résultat de l'appel de cette fonction avec les valeurs de variable données. Cela nous permet d'évaluer le modèle de manière dynamique, en insérant différentes valeurs de variable à chaque fois.
Considérations supplémentaires :
Bien que cette méthode fournisse une solution de contournement au problème de réutilisabilité, elle introduit également des limitations potentielles.
Approches alternatives :
Certains préféreront peut-être explorer des bibliothèques de moteurs de modèles alternatives qui fournissent une solution plus complète pour les modèles réutilisables et évalués au moment de l'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!