Mit dem Aufstieg von node.js werden mehrzeilige Zeichenfolgen in JavaScript immer notwendiger.
- Gibt es eine spezielle Möglichkeit, dies in Node.JS zu tun, auch wenn es in Browsern nicht funktioniert?
- Gibt es Pläne oder zumindest eine Funktionsanforderung, die ich unterstützen kann?
Ich weiß bereits, dass Sie \n\
am Ende jeder Zeile verwenden können, das ist nicht was ich will.
print( '<div>')
mein HTML. Es hat weder Registerkarten noch Rückgaben, was "ordentlich" ist, aber es wäre einfacher, eine<<EOF..EOF
Zeichenfolge im Perl- Stil oder eine JSP-Datei im Java-Stil zu verwenden. Wie auch immer, ich muss in der Lage sein, Variablen in die mehrzeilige Zeichenfolge einzugeben, wenn es darum geht. Ich werde vorerst darauf verzichten.\n
Implementierungen aufgerufen , also ... das sind ziemlich gut nur Browser.Antworten:
Knoten v4 und aktuelle Versionen des Knotens
Ab ES6 (und damit Versionen von Node größer als v4) wurde Javascript ein neuer "Template-Literal" -Typ hinzugefügt (gekennzeichnet durch Back-Ticks "` "), der auch zum Erstellen mehrzeiliger Zeichenfolgen wie in verwendet werden kann ::
welches ergibt :
'this is a\nsingle string'
.Beachten Sie, dass die Neue - Zeile am Ende der ersten Zeile wird in dem resultierenden String enthalten.
Vorlagenliterale wurden hinzugefügt, damit Programmierer Zeichenfolgen erstellen können, bei denen Werte oder Code direkt in ein Zeichenfolgenliteral eingefügt werden können, ohne dass
util.format
andere Vorlagen verwendet werden müssen, wie in:was druckt "das Ergebnis von 10 plus 10 ist 20." zur Konsole.
Ältere Versionen des Knotens
In älteren Versionen des Knotens kann ein "Zeilenfortsetzungszeichen" verwendet werden, mit dem Sie mehrzeilige Zeichenfolgen schreiben können, z.
welches ergibt :
'this is a single string'
.Beachten Sie, dass die neue Zeile am Ende der ersten Zeile nicht in der resultierenden Zeichenfolge enthalten ist.
quelle
Mehrzeilige Zeichenfolgen sind ein aktueller Bestandteil von JavaScript (seit ES6) und werden in node.js v4.0.0 und höher unterstützt.
quelle
Was genau suchen Sie, wenn Sie mehrzeilige Zeichenfolgen meinen?
Suchen Sie etwas wie:
Welches würde als "Some String Here" gedruckt werden?
Wenn ja, denken Sie daran, dass das oben genannte Javascript gültig ist, aber dies ist nicht:
Was ist der Unterschied? Ein Leerzeichen nach dem
\
. Viel Spaß beim Debuggen.quelle
Schauen Sie sich das mstring- Modul für node.js an.
Hinweis: Das Modul (Stand: 13.11.2012) lässt vor dem Schließen keine Leerzeichen zu
***/
, daher müssen Sie es selbst hacken.quelle
Abgesehen von dem, was die Leute hier gepostet haben, habe ich gehört, dass die Verkettung viel schneller sein kann als die Teilnahme an modernen Javascript-VMs. Bedeutung:
Wird langsamer sein als:
In bestimmten Fällen. http://jsperf.com/string-concat-versus-array-join/3
Abgesehen davon finde ich dies eine der ansprechenderen Funktionen in Coffeescript . Ja, ja, ich weiß, Hasser werden hassen.
Es ist besonders schön für HTML-Schnipsel. Ich sage nicht, dass es ein Grund ist, es zu benutzen, aber ich wünschte, es würde in Ecma Land landen :-(.
Josh
quelle
.coffee
nach konvertiert wird.js
, werden die Zeilennummern durcheinander gebracht. Ich habe CoffeeScript nicht ausprobiert, aber als ich Groovy ausprobiert habe, war es ziemlich schwierig, Fehler zu beheben, ohne die generierten.java
Dateien zu erhalten.Schauen Sie sich CoffeeScript an: http://coffeescript.org
Es unterstützt mehrzeilige Zeichenfolgen, Interpolation, Array-Verständnis und viele andere nette Dinge.
quelle
Wenn Sie io.js verwenden, werden mehrzeilige Zeichenfolgen wie in ECMAScript 6 unterstützt.
Weitere Informationen finden Sie unter "Neue Zeichenfolgenmethoden" unter http://davidwalsh.name/es6-io und unter "Vorlagenzeichenfolgen" unter http://kangax.github.io/compat-table/es6/ zur Verfolgung der Kompatibilität.
quelle
Zusätzlich zur akzeptierten Antwort:
Dies ergibt Folgendes: 'Dies ist eine einzelne Zeichenfolge'.
Wenn Sie die Zeichenfolgeninterpolation ohne neue Zeile verwenden möchten, fügen Sie einfach einen umgekehrten Schrägstrich wie in der normalen Zeichenfolge hinzu:
=> 'Dies ist eine einzelne Zeichenfolge'.
Beachten Sie jedoch, dass manuelle Leerzeichen erforderlich sind:
=> 'Dies ist eine einzelne Zeichenfolge'
quelle
Vanilla Javascipt unterstützt keine mehrzeiligen Zeichenfolgen. Sprachvorprozessoren erweisen sich heutzutage als machbar.
CoffeeScript, das beliebteste davon, hat diese Funktion, aber es ist nicht minimal, es ist eine neue Sprache. Der Traceur-Compiler von Google fügt der Sprache neue Funktionen als Obermenge hinzu, aber ich denke nicht, dass mehrzeilige Zeichenfolgen eine der hinzugefügten Funktionen sind.
Ich möchte eine minimale Obermenge von Javascript erstellen, die mehrzeilige Zeichenfolgen und einige andere Funktionen unterstützt. Ich habe diese kleine Sprache vor einiger Zeit angefangen, bevor ich den ersten Compiler für Coffeescript geschrieben habe. Ich habe vor, es diesen Sommer zu beenden.
Wenn Pre-Compiler keine Option sind, gibt es auch den Skript-Tag-Hack, bei dem Sie Ihre mehrzeiligen Daten in einem Skript-Tag im HTML-Code speichern, ihm jedoch einen benutzerdefinierten Typ geben, damit er nicht ausgewertet wird. Später können Sie mit Javascript den Inhalt des Skript-Tags extrahieren.
Wenn Sie am Ende einer Zeile im Quellcode ein \ einfügen, wird die neue Zeile ignoriert, als wäre sie nicht vorhanden. Wenn Sie die neue Zeile möchten, müssen Sie die Zeile mit "\ n \" beenden.
quelle