संपादित करें : मैंने इस उपयोगिता के साथ एक छोटा एनपीएम मॉड्यूल बनाया है। यह वेब पर और नोड में काम करता है और मैं इसे अपने नीचे दिए गए उत्तर में कोड पर अत्यधिक अनुशंसित करता हूं क्योंकि यह कहीं अधिक मजबूत है। यह परिणाम में newlines को संरक्षित करने की अनुमति देता है यदि आप उन्हें मैन्युअल रूप से इनपुट करते हैं \n
, और जब आप पहले से ही किसी और चीज़ के लिए टेम्पलेट शाब्दिक टैग का उपयोग करते हैं तो कार्य प्रदान करता है: https://github.com/iansan5653/compress-tag
मुझे पता है कि मुझे यहाँ जवाब देने में देर हो रही है, लेकिन स्वीकार किए गए उत्तर में अभी भी लाइन ब्रेक के बाद इंडेंट्स की अनुमति नहीं देने का दोष है, जिसका मतलब है कि आप अभी भी नईलाइन्स से बचकर बहुत अच्छा दिखने वाला कोड नहीं लिख सकते हैं।
इसके बजाय, टैग किए गए टेम्प्लेट शाब्दिक फ़ंक्शन का उपयोग क्यों नहीं किया जाता है ?
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;
}
तब आप बस किसी भी टेम्पलेट को शाब्दिक रूप से टैग कर सकते हैं, जिसमें आप लाइन ब्रेक लगाना चाहते हैं:
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.`;
यदि भविष्य में डेवलपर टैग किए गए टेम्पलेट सिंटैक्स का उपयोग नहीं किया जाता है या यदि आप एक वर्णनात्मक फ़ंक्शन नाम का उपयोग नहीं करते हैं, तो संभवतः अप्रत्याशित व्यवहार होने का दोष यह है, लेकिन यह अब के लिए सबसे साफ समाधान की तरह लगता है।