Wraz z pojawieniem się node.js, ciągi wieloliniowe stają się coraz bardziej potrzebne w JavaScript.
- Czy istnieje specjalny sposób na zrobienie tego w Node.JS, nawet jeśli nie działa w przeglądarkach?
- Czy są jakieś plany lub przynajmniej prośba o dodanie funkcji, którą mogę wesprzeć?
Wiem już, że możesz użyć \n\
na końcu każdego wiersza, nie tego chcę.
print( '<div>')
do drukowania mojego HTML. Nie ma ani tabulatorów, ani zwrotów, co jest „schludne”, ale łatwiej byłoby użyć ciągu<<EOF..EOF
znaków w stylu Perla lub pliku JSP w stylu Java. W każdym razie muszę mieć możliwość wprowadzania zmiennych w ciągu wielowierszowym, gdy nadejdzie. Na razie obejdę się bez.\n
implementacji, więc ... to całkiem dobrze tylko przeglądarki.Odpowiedzi:
node v4 i aktualne wersje node
Począwszy od ES6 (a więc wersji Node większych niż v4), nowy typ wewnętrzny „literał szablonu” został dodany do JavaScript (oznaczony znakami wstecznymi „„ ”), który może być również używany do tworzenia wieloliniowych ciągów, jak w :
rozpoznawaną:
'this is a\nsingle string'
.Zauważ, że znak nowej linii na końcu pierwszej linii jest zawarty w wynikowym ciągu.
Dodano literały szablonów, aby umożliwić programistom konstruowanie ciągów, w których wartości lub kod mogą być bezpośrednio wstrzykiwane do literału ciągu bez konieczności używania
util.format
lub innych szablonów, jak w:co spowoduje wyświetlenie "wynik 10 plus 10 to 20." do konsoli.
Starsze wersje node
Starsza wersja węzła może używać znaku „kontynuacji linii”, który umożliwia pisanie wieloliniowych ciągów, takich jak:
rozpoznawaną:
'this is a single string'
.Zwróć uwagę, że znak nowej linii na końcu pierwszej linii nie jest zawarty w wynikowym ciągu.
źródło
Ciągi wielowierszowe są aktualną częścią JavaScript (od ES6) i są obsługiwane w node.js v4.0.0 i nowszych.
źródło
Czego dokładnie szukasz, gdy masz na myśli ciągi wielowierszowe.
Szukasz czegoś takiego jak:
Która z nich zostanie wydrukowana jako „Some String Here”?
Jeśli tak, pamiętaj, że powyższy kod jest prawidłowym JavaScriptem, ale to nie jest:
Co za różnica? Spacja po
\
. Miłego debugowania.źródło
Spójrz na mstring modułem do node.js.
uwaga: moduł (stan na 2012/13/11) nie zezwala na spacje przed zamknięciem
***/
, więc musisz go zhakować w sobie.źródło
Poza tym, co ludzie tutaj publikowali, słyszałem, że konkatenacja może być znacznie szybsza niż dołączanie do nowoczesnych maszyn wirtualnych javascript. Znaczenie:
Będzie wolniejszy niż:
W szczególnych przypadkach. http://jsperf.com/string-concat-versus-array-join/3
Poza tym uważam, że jest to jedna z bardziej atrakcyjnych funkcji w Coffeescript . Tak, tak, wiem, hejterzy będą nienawidzić.
Jest to szczególnie przyjemne w przypadku fragmentów html. Nie mówię, że to powód, aby go używać, ale chciałbym, żeby wylądował w ecma land :-(.
Josh
źródło
.coffee
na.js
numery wierszy są pomieszane. Nie próbowałem CoffeeScript, ale kiedy wypróbowałem Groovy, okazało się, że debugowanie bez pobierania wygenerowanych.java
plików było dość trudne .Spójrz na CoffeeScript: http://coffeescript.org
Obsługuje wieloliniowe ciągi znaków, interpolację, wyrażenia tablicowe i wiele innych fajnych rzeczy.
źródło
Jeśli używasz io.js, obsługuje on ciągi wieloliniowe, tak jak w ECMAScript 6.
Aby uzyskać szczegółowe informacje, zobacz „New String Methods” na stronie http://davidwalsh.name/es6-io, a także „szablony ciągów znaków” na http://kangax.github.io/compat-table/es6/, aby sprawdzić zgodność śledzenia.
źródło
Oprócz zaakceptowanej odpowiedzi:
co daje: „to jest \ njeden ciąg”.
Jeśli chcesz użyć interpolacji ciągów, ale bez nowej linii, po prostu dodaj ukośnik odwrotny, jak w normalnym ciągu:
=> „to jest pojedynczy ciąg znaków”.
Pamiętaj jednak, że ręczne spacje są konieczne:
=> 'to jest pojedynczy ciąg'
źródło
Vanilla Javascipt nie obsługuje ciągów wieloliniowych. Obecnie okazuje się, że preprocesory językowe są wykonalne.
CoffeeScript, najpopularniejszy z nich, ma tę funkcję, ale nie jest to minimalna, to nowy język. Kompilator traceur Google dodaje nowe funkcje do języka jako nadzbiór, ale nie sądzę, aby ciągi wieloliniowe były jedną z dodanych funkcji.
Chcę stworzyć minimalny nadzbiór javascript, który obsługuje ciągi wielowierszowe i kilka innych funkcji. Zacząłem ten mały język jakiś czas temu, zanim napisałem początkowy kompilator dla coffeescript. Planuję to skończyć tego lata.
Jeśli prekompilatory nie są dostępne, istnieje również hack tagów skryptu, w którym przechowujesz swoje dane wielowierszowe w tagu skryptu w html, ale nadaj mu niestandardowy typ, aby nie był oceniany. Następnie za pomocą javascript możesz wyodrębnić zawartość tagu script.
Ponadto, jeśli umieścisz \ na końcu dowolnej linii w kodzie źródłowym, spowoduje to zignorowanie nowej linii, tak jakby jej tam nie było. Jeśli chcesz wprowadzić nową linię, musisz zakończyć linię znakiem „\ n \”.
źródło