Ich brauche so etwas wie Heredoc in JavaScript. Hast du irgendwelche Ideen dafür? Ich benötige browserübergreifende Funktionen.
Ich habe das gefunden:
heredoc = '\
<div>\
<ul>\
<li><a href="#zzz">zzz</a></li>\
</ul>\
</div>';
Ich denke, es wird für mich funktionieren. :) :)
javascript
heredoc
VeroLom
quelle
quelle
Antworten:
Versuchen Sie ES6 String Template , Sie können so etwas tun
Sie können diese großartige Funktion heute mit 6to5 oder TypeScript nutzen
quelle
Nein, leider unterstützt JavaScript so etwas wie heredoc nicht.
quelle
Wie wäre es damit:
Ersetzen Sie einfach "/ * HIER" und "HIER * /" durch ein Wort Ihrer Wahl.
quelle
*/
in Ihrem Heredoc haben.Aufbauend auf der Antwort von Zv_oDD habe ich eine ähnliche Funktion zur einfacheren Wiederverwendung erstellt.
Warnung: Dies ist eine nicht standardmäßige Funktion vieler JS-Interpreter und wird wahrscheinlich irgendwann entfernt. Da ich jedoch ein Skript erstelle, das nur in Chrome verwendet werden soll, verwende ich es! Verlassen Sie sich bei Websites mit Kundenkontakt niemals darauf!
Verwenden:
Kehrt zurück:
Anmerkungen:
Änderungen:
02.02.2014 - geändert, um den Funktionsprototyp überhaupt nicht zu beeinträchtigen und stattdessen den Namen heredoc zu verwenden.
26.05.2017 - Whitespace aktualisiert, um moderne Codierungsstandards widerzuspiegeln.
quelle
Je nachdem, welche JS / JS-Engine Sie verwenden (SpiderMonkey, AS3), können Sie einfach Inline-XML schreiben, in das Sie Text in mehrere Zeilen einfügen können, z. B. heredoc:
quelle
ES6 Template Strings verfügt über eine Heredoc-Funktion.
Sie können Zeichenfolgen deklarieren, die von einem Back-Tick (``) eingeschlossen sind, und können durch mehrere Zeilen erweitert werden.
Sie können auch Ausdrücke in Vorlagenzeichenfolgen einfügen. Diese werden durch das Dollarzeichen und geschweifte Klammern (
${expression}
) angezeigt .Es gibt in der Tat mehr Funktionen wie Tagged Temple Strings und Raw Strings. Die Dokumentation finden Sie unter
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings
quelle
Es tut mir leid , eine separate Antwort für lediglich eine Erweiterung der Antwort von @ NateFerrero zu schreiben , aber ich halte es auch nicht für angebracht, seine Antwort zu bearbeiten. Bitte stimmen Sie @NateFerrero zu, wenn diese Antwort für Sie nützlich war.
tl; dr - Für diejenigen, die Blockkommentare in ihrem Heredoc verwenden möchten ...
Ich brauchte hauptsächlich Javascript-Heredocs, um einen CSS-Block zu speichern, z
Wie Sie jedoch sehen können, kommentiere ich gerne mein CSS, und leider (wie durch die Syntaxhervorhebung angedeutet) beendet der erste
*/
den Gesamtkommentar und bricht den Heredoc.Für diesen speziellen Zweck (CSS) bestand meine Problemumgehung darin, hinzuzufügen
an die Kette in @ NateFerrero's
heredoc
; in vollständiger Form:und verwenden Sie es, indem Sie ein Leerzeichen zwischen
*
und/
für "innere" Blockkommentare einfügen, wie folgt:Der
replace
findet/* ... * /
und entfernt einfach den Raum, um zu machen/* ... */
, wodurch der Heredoc erhalten bleibt, bis er aufgerufen wird.Sie können die Kommentare natürlich ganz mit entfernen
Sie können
//
Kommentare auch unterstützen , wenn Sie sie der Kette hinzufügen:Sie können aber auch etwas anderes als den einzigen Raum zwischen tun
*
und/
wie ein-
:Wenn Sie den regulären Ausdruck nur entsprechend aktualisieren:
Oder möchten Sie eine beliebige Anzahl von Leerzeichen anstelle eines einzelnen Leerzeichens?
quelle
Sie können CoffeeScript verwenden , eine Sprache, die bis zu JavaScript kompiliert wird. Der Code kompiliert eins zu eins in das entsprechende JS, und zur Laufzeit gibt es keine Interpretation.
Und natürlich hat es Heredocs :)
quelle
ES5 und frühere Versionen
ES6 und spätere Versionen
Ergebnis
quelle
Sie können Sweet.js-Makros verwenden, um es so hinzuzufügen, wie es von Tim Disney in diesem Beitrag erstellt wurde
Beachten Sie, dass bei diesem Ansatz stattdessen Backticks als Zeichenfolgenbegrenzer verwendet werden:
quelle
Wie andere bereits gesagt haben, bieten ES6-Vorlagenzeichenfolgen das meiste, was herkömmliche Heredocs bieten.
Wenn Sie noch einen Schritt weiter gehen und eine mit Tags versehene Vorlagenzeichenfolge verwenden möchten,
theredoc
ist dies eine nette Dienstprogrammfunktion, mit der Sie Folgendes tun können:quelle
Wenn Sie HTML und jQuery zur Hand haben und die Zeichenfolge gültiges HTML ist, kann dies nützlich sein:
Wenn der Text dazwischen die Kommentare "<! - ->" enthält, funktioniert dies ebenfalls, aber ein Teil des Textes ist möglicherweise sichtbar. Hier ist die Geige: https://jsfiddle.net/hr6ar152/1/
quelle
Beispiel
mit Cache: - Erstellen Sie eine einfache Vorlagenfunktion und speichern Sie die Funktion: (das zweite Mal funktioniert schnell)
quelle
Ich poste diese Version, da sie die Verwendung von Regex für etwas so Triviales vermeidet.
IMHO Regex ist eine Verschleierung, die als praktischer Witz unter Perl-Entwicklern erstellt wurde. Der Rest der Gemeinde nahm sie ernst und wir zahlen jetzt den Preis, Jahrzehnte später. Verwenden Sie keinen regulären Ausdruck, außer für die Abwärtskompatibilität mit Legacy-Code. Heutzutage gibt es keine Entschuldigung dafür, Code zu schreiben, der nicht sofort von Menschen gelesen und verstanden werden kann. Regex verstößt auf jeder Ebene gegen dieses Prinzip.
Ich habe auch eine Möglichkeit hinzugefügt, das Ergebnis zur aktuellen Seite hinzuzufügen, nicht dass dies gewünscht wurde.
quelle