2017-05-04 7 views
1

このような効果を得るには?テンプレート、動的変数を含む文字列

name = 'Mark'; 
template = 'Your name is {{name}}'; 
console.log(template); // return "Your name is Mark"; 
name = 'John'; 
console.log(template); // return "Your name is John" 

文字列用の簡単なテンプレートシステムを作成するにはどうすればよいですか?たぶん、いくつかのタグを見つける機能({{}}など)と現在の変数を使用してテキストを内側に置き換えますか?または、JSで構築されているいくつかのメソッドですか?

+1

ものを作るする必要はありません、それはすでに存在している〜https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals – Phil

+0

@Phil:あなたはこのフィドルでそれを試すことができますテンプレート文字列はこれとは異なります。テンプレート文字列自体は、ユーザーが定義したものになります。 –

+0

フェアポイント、テンプレートリテラルは補間エンジンではありません – Phil

答えて

2

私は非常に簡素化テンプレート関数を作成しました。などのハンドルバー、口ひげ、ほこり、などのテンプレート化エンジンがあるように私は、生産現場のためにこれを使用することはお勧めしませんが、これはあなたのために働くことがあります。 https://jsfiddle.net/vw6av0am/

function templateMe(template, obj) { 
    var regex = /{{(.*?)}}/g; 
    return template.replace(regex, function(match, capture) { 
    return obj[capture] || ""; 
    }); 
} 

var template = 'Your name is {{name}}'; 
var obj = { 
    name: "Mark" 
}; 

var output = templateMe(template, obj); 
console.log(output); 
+0

誰かが興味がある場合は、渡すオブジェクトのネストされた属性を許可するように更新しました:https://jsfiddle.net/vw6av0am/1/ – jas7457

+0

素晴らしいです、ありがとう!!! – norr

2

は口ひげを試してみてください。 https://mustache.github.io/mustache.5.html

典型的なテンプレートは次のようになります

Hello {{name}} 
You have just won {{value}} dollars! 

同じ(カスタムテンプレート)も反応用いて達成するが、単一の{}中括弧内のJavaScriptコードの使用を反応させることができます。これにより、urは、ur(テンプレート)コンポーネントの周りのロジックに適合することができます。ビュー全体で再利用可能になります。あなたが本当にそれを動的にする必要がある場合

関連する問題