2016-09-12 21 views
1

テンプレートで変数を定義して、テンプレートレンダラーがその値を置き換える必要があります。私は私が持っているいくつかのJavaScript関数でこの変数を使用する必要があります。私が見ることができる唯一の方法文字列のjavascriptエスケープ改行

変数は、一部のHTML自体であり、私はそれが読めない超長い1行の文字列HTMLのように見えないように、それをフォーマットすることができるようにしたい...

<script> 
var myHTML = " 
    <div> 
    content 
    </div>" 
</script> 

それを行うには、これを行うことです(実際に醜い)

<script> 
var myHTML = "" 
    +"<div>" 
    +"content" 
    +"</div>" 
</script> 

これを行うにはフレンドリーな方法はありますか?

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals – Maxx

+0

感謝。私はJavaScriptの文字列リテラルを探していましたが、何も出てこなかったのです – deltaskelta

+0

テンプレート全体を "template.html"という単一のファイルに入れないと、変数全体にAjaxのhttrequestを使うことができますか?これにより、すべてを読みやすく、簡単に更新できるようになります。 –

答えて

2

ソースに挿入された改行文字は、テンプレートリテラルの一部です。あなたはこれらのtop 5 JavaScript templating enginesの1の上にあなたのソリューションを実装することができ、より高度な使用方法の場合については

var myHTML = '<div>\n content\n</div>'; 
 

 
console.log(myHTML);

:通常の文字列を使用して、multi-line stringsを取得するために、次の構文を使用する必要があります:

1

A一般的に使用されると、この要素がアクセス可能になるように、これに優しいアプローチは、text/x-somethingに設定し、type属性を持つ独自の<script>要素にテンプレート文字列を置くことですjavascriptでは表示されますが、ブラウザでは表示されません。

これにより、エスケープや改行の特別な処理をすることなく、通常どおりにHTML(テンプレートマークアップと同様)を書くことができます。

このアプローチの作業のデモ:

//get the template string 
 
var myHTML = document.getElementById("template1").innerHTML; 
 

 
//check that myHTML contains the template string 
 
console.log(myHTML);
<script type="text/x-template" id="template1"> 
 
    <div> 
 
    content 
 
    </div> 
 
</script>

関連する問題