Багаторядковість в JavaScript

3 хв. читання
30 листопада 2020

До

    var str = '' +
    '' +
    '' +
    '   ' +
    '       <h1>❤ unicorns</h1>' +
    '   ' +
    '' +
    '';

Після

    var str = multiline(function(){/*
            <h1>❤ unicorns</h1>
    */});

ЯК

Це працює за допомогою обертання тексту в блоці коментаря, анонімної функції і виклику функції. Анонімна функція передається у виклику функції і зміст коментаря вилучається.

Не дивлячись на те, що це працює повільніше ніж рядковий Concat, зручність завжди важливіша мікро- продуктивності.

Інсталювання

$ npm install --save multiline

GitHub

Використання

Все, від першого рядка до останнього, буде повернене, як показано нижче:

    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});
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.2K
Приєднався: 9 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація