Potrzebuję czegoś takiego jak heredoc w JavaScript. Masz na to jakieś pomysły? Potrzebuję funkcji wielu przeglądarek.
Znalazłem to:
heredoc = '\
<div>\
<ul>\
<li><a href="#zzz">zzz</a></li>\
</ul>\
</div>';
Myślę, że to zadziała. :)
javascript
heredoc
VeroLom
źródło
źródło
Odpowiedzi:
Wypróbuj szablon ciągów ES6 , możesz zrobić coś takiego
Możesz korzystać z tej wspaniałej funkcji już dziś, korzystając z 6to5 lub TypeScript
źródło
Nie, niestety JavaScript nie obsługuje niczego takiego jak heredoc.
źródło
Co powiesz na to:
Po prostu zastąp „/ * TUTAJ” i „TUTAJ * /” wybranym słowem.
źródło
*/
w swoim heredoc.Opierając się na odpowiedzi Zv_oDD, stworzyłem podobną funkcję dla łatwiejszego ponownego użycia.
Ostrzeżenie: jest to niestandardowa funkcja wielu interpreterów JS i prawdopodobnie zostanie w pewnym momencie usunięta, ale ponieważ buduję skrypt do użytku tylko w Chrome, używam go! Nie zawsze polegać na tym na stronach internetowych klientów od strony!
Posługiwać się:
Zwroty:
Uwagi:
Edycje:
2/2/2014 - zmieniono, aby w ogóle nie zadzierać z prototypem funkcji i zamiast tego używać nazwy heredoc.
26.05.2017 - zaktualizowano białe znaki w celu odzwierciedlenia nowoczesnych standardów kodowania.
źródło
W zależności od rodzaju używanego silnika JS / JS (SpiderMonkey, AS3) możesz po prostu napisać wbudowany XML, w którym możesz umieścić tekst w wielu wierszach, jak heredoc:
źródło
ES6 Template Strings posiada funkcję heredoc.
Możesz zadeklarować łańcuchy ujęte w back-tick (``) i można je rozwinąć przez wiele linii.
Możesz również dołączyć wyrażenia do ciągów szablonów. Są one oznaczone znakiem dolara i nawiasami klamrowymi (
${expression}
).W rzeczywistości jest w nim więcej funkcji, takich jak Tagged Temple Strings i Raw Strings. Dokumentację można znaleźć pod adresem
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings
źródło
Źle się czuję, pisząc osobną odpowiedź jako rozszerzenie odpowiedzi @ NateFerrero , ale nie uważam, że edycja jego odpowiedzi jest odpowiednia, więc proszę, zagłosuj na @NateFerrero, jeśli ta odpowiedź była dla Ciebie przydatna.
tl; dr - Dla tych, którzy chcą używać komentarzy blokowych w swoim heredoc ...
Potrzebowałem głównie heredoców Javascript do przechowywania bloku CSS, np
Jak widać jednak, lubię komentować mój CSS i niestety (jak sugeruje podświetlanie składni) pierwszy
*/
kończy ogólny komentarz, łamiąc heredoc.W tym konkretnym celu (CSS) moim obejściem było dodanie
do łańcucha wewnątrz @ NateFerrero's
heredoc
; w pełnej formie:i użyj go, dodając spację między
*
i/
dla komentarzy do bloku „wewnętrznego”, na przykład:Po
replace
prostu znajduje/* ... * /
i usuwa przestrzeń do zrobienia/* ... */
, zachowując w ten sposób heredoc do czasu wezwania.Możesz oczywiście całkowicie usunąć komentarze za pomocą
Możesz również wspierać
//
komentarze, jeśli dodasz je do łańcucha:Możesz także zrobić coś innego niż pojedyncza spacja między
*
i/
, na przykład-
:jeśli tylko odpowiednio zaktualizujesz wyrażenie regularne:
A może wolisz dowolną ilość białych znaków zamiast pojedynczej spacji?
źródło
Możesz użyć CoffeeScript , języka, który kompiluje się do JavaScript. Kod kompiluje jeden do jednego do równoważnego kodu JS i nie ma interpretacji w czasie wykonywania.
I oczywiście ma heredoki :)
źródło
ES5 i wcześniejsze wersje
ES6 i nowsze wersje
wynik
źródło
Możesz użyć makr Sweet.js, aby dodać to w ten sposób, jak stworzył Tim Disney w tym poście
Zauważ, że to podejście zamiast tego używa odwrotnych apostrofów jako separatorów ciągów:
źródło
Jak powiedzieli inni, łańcuchy szablonów ES6 zapewniają większość tego, co zapewniają tradycyjne heredoki.
Jeśli chcesz pójść o krok dalej i użyć oznakowanego ciągu szablonu,
theredoc
to fajna funkcja narzędzia, która pozwala ci to zrobić:źródło
Jeśli masz pod ręką trochę html i jQuery, a ciąg znaków jest prawidłowym kodem HTML, może to być przydatne:
Jeśli pomiędzy tekstem znajdują się komentarze „<! - ->”, to również działa, ale część tekstu może być widoczna. Oto skrzypce: https://jsfiddle.net/hr6ar152/1/
źródło
przykład
z pamięcią podręczną: - stwórz prostą funkcję szablonu i zapisz funkcję: (drugi raz działa szybko)
źródło
Publikuję tę wersję, ponieważ unika ona użycia wyrażenia regularnego do czegoś tak trywialnego.
IMHO regex to zaciemnienie, które zostało stworzone jako praktyczny żart wśród programistów perla. reszta społeczności potraktowała je poważnie i teraz zapłacimy za to cenę, dekady później. nie używaj wyrażenia regularnego, z wyjątkiem zgodności wstecznej ze starszym kodem. w dzisiejszych czasach nie ma wymówki, by pisać kod, który nie byłby od razu czytelny i zrozumiały dla człowieka. regex narusza tę zasadę na każdym poziomie.
Dodałem również sposób dodania wyniku do bieżącej strony, a nie to, o co proszono.
źródło