私はES6テンプレート文字列を使用して構築する長い文字列を持っていますが、改行なしにしたいです:
var string = `As all string substitutions in Template Strings are JavaScript
expressions, we can substitute a lot more than variable names.
For example, below we can use expression interpolation to
embed for some readable inline math:`
console.log(string);
結果:
As all string substitutions in Template Strings are JavaScript
expressions, we can substitute a lot more than variable names.
For example, below we can use expression interpolation to
embed for some readable inline math:
私の期待:
As all string substitutions in Template Strings are JavaScript expressions, we can substitute a lot more than variable names. For example, below we can use expression interpolation to embed for some readable inline math:
これは非常識です。
ここでのほぼすべての答えは、適切にフォーマットするために関数runtimeを実行することを推奨しています。buildtime不正な形式のテキストoOその事実、特にパフォーマンスへの影響にショックを受けたのは私だけですか?
@dandavisが述べているように、 公式の解決策 (これはUNIXシェルスクリプトの歴史的な解決策でもあります)は、キャリッジリターンをエスパス文字でエスケープすることです:\
`foo \
bar` === 'foo bar'
シンプルで、パフォーマンスがあり、公式で、読みやすく、プロセスの中でシェルに似ている
改行は改行です...それらを手動で生成する場合、実行時にそれらを取得することが非常に期待できます。
ところで、私は今のところ3つの回避策を見つけます:
IDEまたはコードエディターを構成して、ワードラップを実行します。必要がない場合、コードに改行を追加する必要はありません。エディターはコードを2つ以上に分割します。各コード文が設定された最大文字数を超える場合は行。
String.prototype.replace
で改行を削除します:
var string = `テンプレート文字列のすべての文字列置換はJavaScript 式であるため、変数名よりもはるかに多くを置換できます。 たとえば、以下では式補間を使用して いくつかの読みやすいインライン数学のために埋め込みます: `.replace(/\n/gm、" ");
注意:ここでは、アンチパターンのように見え、パフォーマンスに影響を与える可能性のあるbuildtimeコードをフォーマットする関数runtimeを実行しています
var string = `テンプレート文字列のすべての文字列置換はJavaScript` +`式なので、変数名よりもはるかに多くを置換できます。` + `たとえば、以下式の補間を使用して、 ` +`いくつかの読みやすいインライン数学に埋め込みます: `;
私の場合、#1オプションを選択します。
ES6がある場合は、タグを使用できます。たとえば、 common-tagsライブラリのstripIndentタグ :
経由でインストール:
_npm install common-tags --save
_
経由で必要:
_const stripIndent = require('common-tags/lib/stripIndent')
_
使用:
_stripIndent`
As all string substitutions in Template Strings are JavaScript
expressions, we can substitute a lot more than variable names.
For example, below we can use expression interpolation to
embed for some readable inline math:
`
_
Edit:コメントで述べたように、希望する結果を得るには、おそらくconst oneLine = require('common-tags/lib/oneLine')
タグを選択する必要があります。
前述のcommon-tagsリンクと このブログ の詳細
私は個人的に代わりに配列に参加する外観を好む:
var string = [
`As all string substitutions in Template Strings are JavaScript`,
`expressions, we can substitute a lot more than variable names.`,
`For example, below we can use expression interpolation to`,
`embed for some readable inline math:`
].join(' ');
IDEを構成して、最初のコードスニペットのように、ラップしてテンプレート文字列1ライナーを使用します。
改行する直前に\
エスケープリテラルcharを使用します。
例:
const string = `1st line\
2nd line\
3rd line`;
しかし、スペース調整の問題からあなたを救うことはありません。
旧式のES5連結と「+」を使用します。
例:
const string = '1st line' +
'2nd line' +
'3rd line';
テンプレートの空の文字列var $ {''}でハックを使用します:
例:
const string = `1st line${''
}2nd line${''
}3rd line`;
1番目の方法ははるかに優れています、原因:
ES6では、ここで2つの上位の回答を組み合わせて使用することを好みます(_\
_と.replace()
の組み合わせ)。置換関数とエスケープ文字を組み合わせる利点は、コードブロックを残りのコードで一貫した形式に保つことができることを意味します。
_/\s{2}/g
_は、2つ以上の連続したスペースのインスタンスを選択する正規表現です。
_const myMessage = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id urna \
ligula. Suspendisse lobortis ex ut vestibulum venenatis. Donec imperdiet ante odio, \
nec malesuada diam tristique eget. Lorem ipsum dolor sit amet, consectetur adipiscing \
elit. Cras in vulputate tellus.`
.replace(/\s{2,}/g, "");
_
これにより、プレーンで切れ目のない文字列が出力されます。
"Lorem ipsum dolor sit amet、conciptetur adipiscing elit。Duis id urna ligula。Suispendisse lobortis ex ut vestibulum venenatis。Donec imperdiet ante odio、nec malesuada diam trisique eget。Lorem ipsum dolor amet、consectetur elit。 tellus。 "