3462 Stimmen

Mehrzeilige Zeichenketten in JavaScript erstellen

Ich habe den folgenden Code in Ruby. Ich möchte diesen Code in JavaScript umwandeln. Was ist der entsprechende Code in JS?

text = <<"HERE"
This
Is
A
Multiline
String
HERE

9voto

seo Punkte 1913

Wenn Sie bereit sind, die escapeten Zeilenumbrüche zu verwenden, können sie verwendet werden schön . Es sieht aus wie ein Dokument mit einem Seitenrand .

enter image description here

3 Stimmen

Würden dadurch nicht überflüssige Leerzeichen hinzugefügt?

1 Stimmen

@tomByrer Ja, gute Beobachtung. Es ist nur gut für Zeichenfolgen, die Sie nicht über Leerzeichen, z. B. HTML kümmern.

9voto

mikemaccana Punkte 93077

Aktualisiert für 2015 Sechs Jahre später: Die meisten Leute benutzen einen Modul-Loader, und die wichtigsten Modulsysteme haben jeweils Möglichkeiten, Vorlagen zu laden. Es ist nicht inline, aber die häufigste Art von mehrzeiligen Strings sind Templates, und Templates sollten in der Regel sowieso aus JS herausgehalten werden .

require.js: 'require text'.

Verwendung von require.js 'text'-Plugin mit einer mehrzeiligen Vorlage in Vorlage.html

var template = require('text!template.html')

NPM/browserify: Das Modul 'brfs'.

Browserify verwendet ein 'brfs'-Modul um Textdateien zu laden. Dadurch wird Ihre Vorlage tatsächlich in Ihr gebündeltes HTML eingebaut.

var fs = require("fs");
var template = fs.readFileSync(template.html', 'utf8');

Einfach.

8voto

Willem van der Veen Punkte 26043

Der einfachste Weg, mehrzeilige Zeichenketten in Javascripts zu erstellen, ist die Verwendung von Backticks ( `` ). Damit können Sie mehrzeilige Zeichenketten erstellen, in die Sie Variablen einfügen können mit ${variableName} .

Ejemplo:

let name = 'Willem'; 
let age = 26;

let multilineString = `
my name is: ${name}

my age is: ${age}
`;

console.log(multilineString);

Kompatibilität :

  • Sie wurde eingeführt in ES6 // es2015
  • Es wird jetzt von allen wichtigen Browserherstellern (außer Internet Explorer) unterstützt.

Prüfen Sie die genaue Kompatibilität in den Mozilla-Dokumenten hier

0 Stimmen

Ist dies nun mit allen aktuellen Browsern kompatibel? Oder gibt es noch einige Browser, die diese Syntax nicht unterstützen?

0 Stimmen

Entschuldigung für meinen extrem späten Kommentar, habe die Antwort bearbeitet und Kompatibilitätsinformationen hinzugefügt ;)

8voto

jenil christo Punkte 656

Der ES6-Weg, dies zu tun, wäre die Verwendung von Template-Literalen:

const str = `This 

is 

a

multiline text`; 

console.log(str);

Weitere Referenzen aquí

0 Stimmen

Diese Antwort ist nicht nur klein, unvollständig und schlecht formatiert, sondern trägt auch nichts zu den vorherigen Antworten bei. Ich kennzeichne sie und hoffe, dass sie gelöscht wird.

7voto

Stefan Steiger Punkte 72861

Sie können verwenden TypScript (JavaScript SuperSet), unterstützt mehrzeilige Zeichenketten und lässt sich ohne Overhead in reines JavaScript zurückverwandeln:

var templates = {
    myString: `this is
a multiline
string` 
}

alert(templates.myString);

Wenn Sie dasselbe mit einfachem JavaScript erreichen wollen:

var templates = 
{
 myString: function(){/*
    This is some
    awesome multi-lined
    string using a comment 
    inside a function 
    returned as a string.
    Enjoy the jimmy rigged code.
*/}.toString().slice(14,-3)

}
alert(templates.myString)

Beachten Sie, dass das iPad/Safari die folgenden Funktionen nicht unterstützt 'functionName.toString()'

Wenn Sie viel Legacy-Code haben, können Sie auch die einfache JavaScript-Variante in TypeScript verwenden (zu Bereinigungszwecken):

interface externTemplates
{
    myString:string;
}

declare var templates:externTemplates;

alert(templates.myString)

und Sie können das Multiline-String-Objekt aus der einfachen JavaScript-Variante verwenden, bei der Sie die Vorlagen in eine andere Datei packen (die Sie in das Bundle einbinden können).

Sie können TypeScript ausprobieren unter
http://www.typescriptlang.org/Playground

0 Stimmen

Gibt es eine Dokumentation über die iPad/Safari-Beschränkung? MDN scheint zu glauben, dass alles in Ordnung ist - developer.mozilla.org/de-US/docs/Web/JavaScript/Reference/

0 Stimmen

@Campbeln: CoWorker hat mir das erzählt (er hat den Code benutzt). Ich habe es nicht selbst getestet. Könnte auch von der iPad/Safari-Version abhängen - hängt also wahrscheinlich davon ab.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X