แก้ไข : ฉันได้สร้างโมดูล NPM เล็ก ๆ ด้วยยูทิลิตี้นี้ มันใช้งานได้บนเว็บและใน Node และฉันขอแนะนำให้ใช้รหัสนี้ในคำตอบด้านล่างของฉันเพราะมันแข็งแกร่งกว่ามาก นอกจากนี้ยังช่วยในการรักษาบรรทัดใหม่ในผลลัพธ์หากคุณป้อนด้วยตนเองเป็น\n
และมีฟังก์ชันสำหรับเมื่อคุณใช้แท็กลิเทอรัลเทมเพลตสำหรับสิ่งอื่นอยู่แล้ว: https://github.com/iansan5653/compress-tag
ฉันรู้ว่าฉันช้าที่จะตอบที่นี่ แต่คำตอบที่ได้รับการยอมรับยังคงมีข้อเสียคือไม่อนุญาตให้มีการเยื้องหลังเส้นแบ่งซึ่งหมายความว่าคุณยังไม่สามารถเขียนโค้ดที่ดูดีได้เพียงแค่หนีขึ้นบรรทัดใหม่
ทำไมไม่ใช้ฟังก์ชันลิเทอรัลเทมเพลตที่ติดแท็กแทนล่ะ
function noWhiteSpace(strings, ...placeholders) {
let withSpace = strings.reduce((result, string, i) => (result + placeholders[i - 1] + string));
let withoutSpace = withSpace.replace(/\s\s+/g, ' ');
return withoutSpace;
}
จากนั้นคุณสามารถแท็กแม่แบบตามตัวอักษรที่คุณต้องการให้มีการแบ่งบรรทัด:
let myString = noWhiteSpace`This is a really long string, that needs to wrap over
several lines. With a normal template literal you can't do that, but you can
use a template literal tag to allow line breaks and indents.`;
สิ่งนี้มีข้อเสียเปรียบที่อาจมีพฤติกรรมที่ไม่คาดคิดหากนักพัฒนาในอนาคตไม่คุ้นเคยกับไวยากรณ์ของเทมเพลตที่ติดแท็กหรือถ้าคุณไม่ได้ใช้ชื่อฟังก์ชันที่สื่อความหมาย แต่ตอนนี้รู้สึกว่าเป็นโซลูชันที่สะอาดที่สุด