Heim  >  Artikel  >  Web-Frontend  >  Wie kann die Auswertung von ES6-Vorlagenliteralen verschoben werden?

Wie kann die Auswertung von ES6-Vorlagenliteralen verschoben werden?

Susan Sarandon
Susan SarandonOriginal
2024-11-06 20:42:03428Durchsuche

How to Defer Evaluation of ES6 Template Literals?

Ausführung für ES6-Vorlagenliterale verzögern

ES6-Vorlagenliterale bieten einen leistungsstarken syntaktischen Zucker für die String-Interpolation, aber was ist, wenn Sie die Auswertung verschieben möchten? bis nach der dynamischen Elementerstellung?

Das Problem

Traditionell würde die Verwendung von String.prototype.format eine verzögerte Auswertung ermöglichen. Vorlagenliterale werden jedoch zum Zeitpunkt der Analyse ausgewertet, was diesen Ansatz verhindert.

Lösung 1: Mit Tags versehene Vorlagenliterale verwenden

Mit Tags versehene Vorlagenliterale ermöglichen Ihnen das Abfangen und Verarbeiten der Vorlage Literal vor der Auswertung:

function formatter(literals, ...substitutions) {
    return {
        format: function() {
            // ... code here ...
        }
    };
}
console.log(formatter`Hello, <pre class="brush:php;toolbar:false">String.prototype.format = function() {
    var args = arguments;
    return this.replace(/$\{p(\d)\}/g, function(match, id) {
        return args[id];
    });
};
console.log("Hello, ${p0}. This is a ${p1}".format("world", "test"));
. This is a `.format("world", "test"));

Lösung 2: Einfache String-Literale verwenden

Alternativ können Sie einfache String-Literale verwenden und die Ersetzungen manuell analysieren:

const welcome = (p0, p1) => `Hello, ${p0}. This is a ${p1}`;
console.log(welcome("world", "test"));

Lösung 3: Vorlagenliterale vermeiden und Funktionsparameter verwenden

Schließlich können Sie Vorlagenliterale ganz vermeiden und Funktionsparameter verwenden:

Überlegungen

  • Lösung 1 bietet die größte Flexibilität, kann aber für einfache Anwendungsfälle zu komplex sein.
  • Lösung 2 ist einfacher, erfordert aber manuelles Parsen.
  • Lösung 3 verwendet einen traditionellen Ansatz ohne Vorlagenliterale.

Das obige ist der detaillierte Inhalt vonWie kann die Auswertung von ES6-Vorlagenliteralen verschoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn