JavaScript学習のES 6 ES 2015学記ノート(三)-テンプレート文字列(Template Strigs)


背徳の基礎知識
       ES 6には新しい文字列の字面量文法が導入されており、テンプレート文字列と呼ばれています.一般文字列の代わりに反則文字を使った'以外は普通の文字列と同じように見えますが、最も簡単な場合は普通の文字列と一致しています.
context.fillText(`Ceci n'est pas une chaîne.`, x, y);
しかし、「反則符号で囲まれた普通の文字列」ではなく、文字列補間です. 
//          
function authorize(user, action) {
    if (!user.hasPrivilege(action)) {
    throw new Error(
    `   ${user.name}        ${action}   。 `);
    }
}
この例では、$US{user.name}と$actionをテンプレートプレースホルダと呼びます.JavaScriptは、user.nameとactionを最終的に生成された文字列に挿入します.
        テンプレートのプレースホルダのコードは任意のJavaScript式であることができますので、関数の呼び出し、演算などはプレースホルダとして使用できます.テンプレート文字列の中に他のものをはめることもできます.テンプレートセットと呼びます.       入力した値が文字列でない場合は通過します.toString()は文字列の値に変換されます.
       テンプレートの文字列に逆符号を書く必要がある場合は、バックスラッシュを使ってその意味を変えなければなりません.この類推によって、ドルを導入して、{バックスラッシュ}を使って文字を変換します.'''''''''''''''''''''もできます.また、テンプレートの文字列は複数行で書くことができます.
$("#myTemplateStrings").html(`
    

${name}

${templateStrings}

`);
ここでは、すべてのスペース、改行、再進は、生成した文字列にそのまま出力されます.
背徳の未来
  • は特別な文字を自動的に変換しません.クロスステーションスクリプト・ホール(XSS)を避けるためには、通常の文字列をつなぎ合わせるときのように、非信頼データを特殊処理する必要があります.
  • は国際化ライブラリ(異なるユーザーに向けて異なる言語を提供することができます)とうまく協力できません.テンプレート文字列は特定の言語の数字と日付をフォーマットしません.また、異なる言語を同時に使用する場合もあります.
  • 彼らはテンプレートエンジンの位置を代替できません.例えば、Mustache、Nunjucks. 一部の理由は、テンプレート文字列には内部的な循環や条件文文法がないからです.この問題をどう解決するかを一緒に見てみます.JSがこの特性を提供しないなら、ラベルを書いて対応を提供します. 
  • テンプレート文字列には内部の循環文法がないので、配列を巡回してHTMLのようなテーブルを構築することができません.条件文さえサポートしていません.テンプレート構成の方法は比較的に愚鈍です.
  • ES 6はJS開発者とライブラリ設計者に素晴らしい派生ツールを提供しています.この特性を利用してテンプレート文字列の多くの制限を突破してもいいです.私たちはラベルテンプレートといいます.テンプレート文字列の反則番号の前に追加のラベルを付加するだけでいいです.例:
    //            
    // ES6     。
    var libraryHtml = hashTemplate`
    
      #for book in ${myBooks}
    • #{book.title} by #{book.author}
    • #end
    `;
    ES 6の任意のメンバー表現です.(Member Expression)または汎用式(CallExpression)ラベルとして使用できます.上のコードは
    var message = SafeHTML`

    ${bonk.sender}say hello to you.

    `;
    のtemplateDataに相当します.テンプレートのすべての文字列部分が格納されています.JSエンジンによって作成されます.この配列は2つの要素を含んでいます.
    var message = SafeHTML(templateData,bonk.sender);
    SafeHTMLは、異なる方法でHTMLの異なる部分の特殊文字を作成する必要があります.意味を変えると、SafeHTMLは全部の転送ができなくなります.
  • いつからこの特性を使うことができますか? 
            サーバ端末io.jsはES 6クライアントFirefoxとChromeをサポートします.