Dengan munculnya node.js, string multi-baris menjadi lebih diperlukan di JavaScript.
- Apakah ada cara khusus untuk melakukan ini di Node.JS, meskipun tidak berfungsi di browser?
- Apakah ada rencana atau setidaknya permintaan fitur untuk melakukan ini yang dapat saya dukung?
Saya sudah tahu bahwa Anda dapat menggunakan \n\
di akhir setiap baris, bukan itu yang saya inginkan.
print( '<div>')
untuk mencetak HTML saya. Ia tidak memiliki tab atau pun hasil yang "rapi", tetapi akan lebih mudah untuk menggunakan<<EOF..EOF
string gaya Perl atau file JSP gaya Java. Bagaimanapun, saya harus bisa memasukkan variabel dalam string multi-baris saat itu datang. Saya akan melakukannya untuk saat ini.\n
implementasi, jadi ... itu hanya browser yang cukup baik.Jawaban:
node v4 dan versi node saat ini
Sejak ES6 (dan versi Node yang lebih besar dari v4), jenis intrinsik "template literal" baru telah ditambahkan ke Javascript (dilambangkan dengan tanda centang "` ") yang juga dapat digunakan untuk membuat string multi-baris, seperti pada :
yang mengevaluasi ke:
'this is a\nsingle string'
.Perhatikan bahwa baris baru pada akhir baris pertama adalah termasuk dalam string yang dihasilkan.
Literal templat ditambahkan untuk memungkinkan pemrogram membuat string di mana nilai atau kode dapat langsung dimasukkan ke dalam literal string tanpa harus menggunakan
util.format
atau templater lainnya, seperti di:yang akan mencetak "hasil dari 10 ditambah 10 adalah 20." ke konsol.
Versi node yang lebih lama
Versi node yang lebih lama dapat menggunakan karakter "baris lanjutan" yang memungkinkan Anda menulis string multi-baris seperti:
yang mengevaluasi ke:
'this is a single string'
.Perhatikan bahwa baris baru di akhir baris pertama tidak disertakan dalam string yang dihasilkan.
sumber
String multiline adalah bagian JavaScript saat ini (sejak ES6) dan didukung di node.js v4.0.0 dan yang lebih baru.
sumber
Apa sebenarnya yang Anda cari saat yang Anda maksud adalah string multiline.
Apakah Anda mencari sesuatu seperti:
Yang mana yang akan dicetak sebagai "Beberapa String Di Sini"?
Jika demikian, perlu diingat bahwa yang di atas adalah Javascript yang valid, tetapi ini bukan:
Apa bedanya? Spasi setelah
\
. Selamat men-debug itu.sumber
Lihatlah di mstring modul untuk Node.js.
catatan: Modul (per 2012/13/11) tidak mengizinkan spasi sebelum penutupan
***/
, jadi Anda harus meretasnya sendiri.sumber
Selain dari apa yang telah diposting orang-orang di sini, saya pernah mendengar bahwa penggabungan bisa jauh lebih cepat daripada bergabung di vms javascript modern. Berarti:
Akan lebih lambat dari:
Dalam kasus-kasus tertentu. http://jsperf.com/string-concat-versus-array-join/3
Selain itu, menurut saya ini salah satu fitur yang lebih menarik di Coffeescript . Ya, ya, saya tahu, pembenci akan membenci.
Ini sangat bagus untuk cuplikan html. Saya tidak mengatakan itu alasan untuk menggunakannya, tapi saya berharap itu akan mendarat di tanah ecma :-(.
Josh
sumber
.coffee
menjadi.js
, nomor barisnya campur aduk. Saya belum mencoba CoffeeScript, tetapi ketika saya mencoba Groovy, saya merasa cukup sulit untuk melakukan debug tanpa mendapatkan.java
file yang dihasilkan .Lihat CoffeeScript: http://coffeescript.org
Ini mendukung string multi-baris, interpolasi, pemahaman array dan banyak hal bagus lainnya.
sumber
Jika Anda menggunakan io.js, ini memiliki dukungan untuk string multi-baris seperti yang ada di ECMAScript 6.
Lihat "Metode String Baru" di http://davidwalsh.name/es6-io untuk detailnya dan "string template" di http://kangax.github.io/compat-table/es6/ untuk kompatibilitas pelacakan.
sumber
Selain jawaban yang diterima:
yang dievaluasi menjadi: 'this is a \ nsingle string'.
Jika Anda ingin menggunakan interpolasi string tetapi tanpa baris baru, cukup tambahkan garis miring terbalik seperti pada string biasa:
=> 'ini adalah satu string'.
Ingatlah bahwa spasi manual diperlukan:
=> 'ini adalah satu string'
sumber
Vanilla Javascipt tidak mendukung string multi-baris. Bahasa pra-pengolah berubah menjadi layak hari ini.
CoffeeScript, yang paling populer memiliki fitur ini, tetapi tidak minimal, ini adalah bahasa baru. Kompiler traceur Google menambahkan fitur baru ke bahasa sebagai superset, tetapi menurut saya string multi-baris bukanlah salah satu fitur tambahan.
Saya sedang mencari superset minimal javascript yang mendukung string multiline dan beberapa fitur lainnya. Saya memulai bahasa kecil ini beberapa waktu yang lalu sebelum menulis kompiler awal untuk coffeescript. Saya berencana untuk menyelesaikannya musim panas ini.
Jika pra-kompiler bukan pilihan, ada juga peretasan tag skrip di mana Anda menyimpan data multi-baris Anda dalam tag skrip di html, tetapi berikan tipe khusus sehingga tidak terevaluasi. Kemudian nantinya menggunakan javascript, Anda bisa mengekstrak isi dari tag script tersebut.
Selain itu, jika Anda meletakkan \ di akhir baris mana pun dalam kode sumber, ini akan menyebabkan baris baru diabaikan seolah-olah tidak ada. Jika Anda menginginkan baris baru, maka Anda harus mengakhiri baris dengan "\ n \".
sumber