ほほーこんな方法が! 複数行の文字列を変数に入れる場合、ヒアドキュメントを使うのが一般的です。しかしJavaScriptにはヒアドキュメント機能がないので複数行の記述がメンテナンスしづらいものになりがちです。 そこで使ってみたいのがmultilineです。こんな方法があったのか!といったやり方で解決してくれます。

multilineの使い方

まずは通常の書き方から。

var str = '' +
'< !doctype html>' +
'<html>' +
'   <body>' +
'       <h1>❤ unicorns/h1>' +
'   </h1></body>' +
'</html>' +
'';

まぁ普通ですよね。これがmultilineを使った場合、

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

となります。知らなかったのですが、functionを変数に入れてそれのtoString()をするとコメントの文字も取れるのですね。後はコメントの接頭、接尾語を取り除けば良いという訳です。目から鱗です。

サーバ/クライアントサイドの両方で動作します。

$ npm install --save multiline   // サーバサイド
$ bower install --save multiline // クライアントサイド

ブラウザはIE6以上、Chrome、Firefox 17以上、Safari 4以上とかなり幅広く動作します。

ちなみに通常JavaScriptでは\で次の行の文字まで読み込みますが、この場合は単なる連結で改行は考慮されません。その意味にいてもmultilineのがメリットがありそうです。なお、ECMAScript 6では ` を使って複数行の記述もできるようになるとのことなので、それまでの繋ぎまたはレガシーなブラウザを含めて提供すると言ったメリットがありそうです。

multilineはJavaScript製、MIT Licenseのオープンソース・ソフトウェアです。

sindresorhus/multiline