Saya butuh sesuatu seperti heredoc di JavaScript. Apakah Anda punya ide untuk ini? Saya membutuhkan fungsionalitas lintas browser.
Aku menemukan ini:
heredoc = '\
<div>\
<ul>\
<li><a href="#zzz">zzz</a></li>\
</ul>\
</div>';
Saya pikir itu akan berhasil untuk saya. :)
javascript
heredoc
VeroLom
sumber
sumber
Jawaban:
Coba ES6 String Template , Anda dapat melakukan sesuatu seperti
Anda dapat menggunakan fitur hebat ini hari ini dengan 6to5 atau TypeScript
sumber
Tidak, sayangnya JavaScript tidak mendukung hal seperti heredoc.
sumber
Bagaimana dengan ini:
Cukup ganti "/ * HERE" dan "HERE * /" dengan kata pilihan.
sumber
*/
di heredoc Anda.Berdasarkan jawaban Zv_oDD, saya membuat fungsi serupa agar lebih mudah digunakan kembali.
Peringatan: Ini adalah fitur non-standar dari banyak interpreter JS, dan mungkin akan dihapus pada suatu saat, tetapi karena saya membuat skrip untuk hanya digunakan di Chrome, saya menggunakannya! Jangan pernah mengandalkan ini untuk situs web yang berhadapan dengan klien!
Menggunakan:
Pengembalian:
Catatan:
Editan:
2/2/2014 - diubah menjadi tidak main-main dengan prototipe Fungsi sama sekali dan menggunakan nama heredoc sebagai gantinya.
26/5/2017 - spasi yang diperbarui untuk mencerminkan standar pengkodean modern.
sumber
Bergantung pada jenis mesin JS / JS yang Anda jalankan (SpiderMonkey, AS3), Anda cukup menulis XML sebaris, di mana Anda dapat menempatkan teks pada beberapa baris, seperti heredoc:
sumber
String Template ES6 memiliki fitur heredoc.
Anda dapat mendeklarasikan string yang diapit oleh tanda centang balik (``) dan dapat diperluas melalui beberapa baris.
Anda juga dapat menyertakan ekspresi di dalam Template Strings. Ini ditunjukkan oleh tanda Dolar dan tanda kurung kurawal (
${expression}
).Sebenarnya ada lebih banyak fitur seperti Tagged Temple Strings dan Raw Strings di dalamnya. Temukan dokumentasi di
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings
sumber
Saya merasa tidak enak menulis jawaban terpisah hanya untuk perpanjangan dari jawaban @ NateFerrero , tetapi saya juga merasa mengedit jawabannya juga tidak sesuai, jadi tolong upvote @NateFerrero jika jawaban ini bermanfaat bagi Anda.
tl; dr — Bagi mereka yang ingin menggunakan komentar blokir di dalam heredoc ...
Saya terutama membutuhkan Javascript heredocs untuk menyimpan satu blok CSS, misalnya
Namun seperti yang Anda lihat, saya suka mengomentari CSS saya, dan sayangnya (seperti yang diisyaratkan oleh penyorotan sintaks) yang pertama
*/
mengakhiri keseluruhan komentar, melanggar heredoc.Untuk tujuan khusus ini (CSS), solusi saya adalah menambahkan
ke rantai di dalam @ NateFerrero
heredoc
; dalam bentuk lengkap:dan menggunakannya dengan menambahkan spasi di antara
*
dan/
untuk komentar blok "dalam", seperti:Yang
replace
sederhana menemukan/* ... * /
dan menghilangkan ruang untuk dibuat/* ... */
, dengan demikian melestarikan heredoc sampai dipanggil.Anda tentu saja dapat menghapus semua komentar menggunakan
Anda juga dapat mendukung
//
komentar jika Anda menambahkannya ke rantai:Selain itu, Anda dapat melakukan sesuatu selain spasi tunggal antara
*
dan/
, seperti-
:jika Anda hanya memperbarui regex dengan benar:
Atau mungkin Anda menginginkan jumlah spasi yang berubah-ubah alih-alih satu spasi?
sumber
Anda dapat menggunakan CoffeeScript , bahasa yang dikompilasi ke JavaScript. Kode mengkompilasi satu-ke-satu ke dalam JS yang setara, dan tidak ada interpretasi pada waktu proses.
Dan tentu saja, itu memiliki heredocs :)
sumber
ES5 dan versi sebelumnya
ES6 dan versi yang lebih baru
hasil
sumber
Anda dapat menggunakan Sweet.js Macros untuk menambahkannya seperti itu, seperti yang dibuat oleh Tim Disney di posting ini
Perhatikan bahwa pendekatan ini menggunakan backticks sebagai pemisah string sebagai gantinya:
sumber
Seperti yang dikatakan orang lain, string template ES6 memberi Anda sebagian besar dari apa yang disediakan oleh heredocs tradisional.
Jika Anda ingin melangkah lebih jauh dan menggunakan string template yang diberi tag,
theredoc
adalah fungsi utilitas bagus yang memungkinkan Anda melakukan ini:sumber
Jika Anda memiliki beberapa html dan jQuery dan stringnya adalah HTML yang valid, ini mungkin berguna:
Jika teks memiliki komentar "<! - ->" di antaranya, ini juga berfungsi, tetapi sebagian teks mungkin terlihat. Ini biolanya: https://jsfiddle.net/hr6ar152/1/
sumber
contoh
dengan cache: - buat fungsi template sederhana, dan simpan fungsinya: (kedua kalinya bekerja cepat)
sumber
Saya memposting versi ini karena menghindari penggunaan regex untuk sesuatu yang sangat sepele.
IMHO regex adalah obfuscation yang dibuat sebagai lelucon praktis di antara pengembang perl. komunitas lainnya menanggapinya dengan serius dan kami sekarang harus menanggung akibatnya, puluhan tahun kemudian. jangan gunakan regex, kecuali untuk kompatibilitas mundur dengan kode lama. tidak ada alasan akhir-akhir ini untuk menulis kode yang tidak langsung dapat dibaca dan dimengerti oleh manusia. regex melanggar prinsip ini di setiap level.
Saya juga telah menambahkan cara untuk menambahkan hasil ke halaman ini, bukan yang diminta.
sumber