EDIT : Tôi đã tạo một mô-đun NPM nhỏ với tiện ích này. Nó hoạt động trên web và trong Node và tôi thực sự khuyên bạn nên sử dụng mã trong câu trả lời dưới đây vì nó mạnh mẽ hơn nhiều. Nó cũng cho phép duy trì các dòng mới trong kết quả nếu bạn nhập chúng theo cách thủ công \n
và cung cấp các chức năng khi bạn đã sử dụng thẻ bằng chữ mẫu cho một thứ khác: https://github.com/iansan5653/compress-tag
Tôi biết tôi đến trễ để trả lời ở đây, nhưng câu trả lời được chấp nhận vẫn có nhược điểm là không cho phép thụt lề sau khi ngắt dòng, điều đó có nghĩa là bạn vẫn không thể viết mã trông rất đẹp chỉ bằng cách thoát dòng mới.
Thay vào đó, tại sao không sử dụng một chức năng chữ được gắn thẻ ?
function noWhiteSpace(strings, ...placeholders) {
// Build the string as normal, combining all the strings and placeholders:
let withSpace = strings.reduce((result, string, i) => (result + placeholders[i - 1] + string));
let withoutSpace = withSpace.replace(/\s\s+/g, ' ');
return withoutSpace;
}
Sau đó, bạn có thể chỉ cần gắn thẻ bất kỳ mẫu nào bạn muốn có dấu ngắt dòng:
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.`;
Điều này có nhược điểm là có thể có hành vi không mong muốn nếu nhà phát triển trong tương lai không sử dụng cú pháp mẫu được gắn thẻ hoặc nếu bạn không sử dụng tên hàm mô tả, nhưng hiện tại nó giống như một giải pháp sạch nhất.