До
var str = '' +
'' +
'' +
' ' +
' <h1>❤ unicorns</h1>' +
' ' +
'' +
'';
Після
var str = multiline(function(){/*
<h1>❤ unicorns</h1>
*/});
ЯК
Це працює за допомогою обертання тексту в блоці коментаря, анонімної функції і виклику функції. Анонімна функція передається у виклику функції і зміст коментаря вилучається.
Не дивлячись на те, що це працює повільніше ніж рядковий Concat, зручність завжди важливіша мікро- продуктивності.
Інсталювання
$ npm install --save multiline
Використання
Все, від першого рядка до останнього, буде повернене, як показано нижче:
var str = multiline(function(){/*
<h1>❤ unicorns</h1>
*/});
На виході:
<h1>❤ unicorns</h1>
Смуга відступу
Ви можете використовувати multiline.stripIndent(),
щоб зробити
багатостроковий відступ без збереження надлишкових пропусків.
var str = multiline.stripIndent(function(){/*
<h1>❤ unicorns</h1>
*/});
На виході:
<h1>❤ unicorns</h1>
Заміна рядків
console.log()
підтримує string substitution:
var str = 'unicorns';
console.log(multiline(function(){/*
I love %s
*/}), str);
//=> I love unicorns
FAQ
Але в JS вже є багатостроковий текст з \?
var str = 'foo\\
bar';
Це не багаторядковість. Це лінія-продовження. Вона не зберігає нові рядки.
Ви повинні зробити наступне:
var str = 'foo\
\\
bar';
Але тоді ви могли б виконати об'єднання так:
var str = 'foo\
' +
'bar';
Зверніть увагу, що ES6 матиме реальний багатостроковий текст.
Браузер
У той час як це гарно працює в браузері, воно в основному призначене для використання в Node.js. Використовуйте на свій страх і ризик.
Інсталювання
$ bower install --save multiline
$ component install sindresorhus/multiline
Сумісність
- Найновіший Chrome
- Firefox >=17
- Safari >=4
- Opera >=9
- Internet Explorer >=6
Мініфікація
Не дивлячись на те, що коментарі прибрані за замовчуванням, є способи, щоб зберегти їх:
- Спотворювання: Використовувати
/*@preserve
замість/*
та задіяти функцію коментування - Компілятор закриття: Використовувати
/*@preserve
замість/*
- YUI компресор: Використовувати
/*!
instead of/*
Крім того, необхідно додати console.log після коментаря, щоб він не видалявся як мертвий код.
Кінцевий результат буде виглядати так:
var str = multiline(function(){/*!@preserve
<h1>❤ unicorns</h1>
*/console.log});
Ще немає коментарів