2017-01-26 1 views
1

私はひげを使って1つの文字列を作成し、その中のいくつかの変数を置き換えます。代わりにTemplateStringを使用したいと思いますが、実行時に文字列を解決する必要があります。外部ソースからテンプレート文字列を読み込んでいるので、コードコンパイル時ではありません。Javascript ES6 TemplateString a TemplateString

明確にするには:

// mustachy example 
// template is "foo{{who}}" and myData.whmustao = "manchu" 
let myResult = mustache.render(getMyTemplate(),myData); 
console.log(myResult); // "foomanchu" 

これはかなり軽量であり、そして私はTemplateStringを使用するのが大好きだが、それにaludes下の例のように - 私は、外部の文字列を提供する方法を想像することはできません最初の場所...

// ES6xy example 
let myResult = `foo${myData.who}`; // can't get this at runtime 
console.log(myResult); // "foomanchu" 

しかし、私はこれを達成するための、まっすぐで清潔で、卑劣な方法を想像することはできません。あなたはできる?

答えて

0

ありがとう渡す持ってまで、あなたはあなたの応答を遅らせる場合は、この戦略はまた、サーバ上で動作しますあなたの返信と創造的な解決のために。しかし、私は、テンプレートストリングはコード内の機能であるのに対し、口髭のような他のテンプレートソリューションはデータ駆動型の機能であるため、解決策はないと考えました。

つまり、ES6のテンプレート文字列は、機能を静的なコード内の文字列に限定する言語機能です。想像される他の柔軟性は、アプリケーションに注入するコードの動的実行に依存する必要があります。これはすべてのハッカーの夢です。

私の元々の考え方、つまりMustacheがあなたのソースにハードコードされていない単純な文字列に対して過度のものであるかどうかの答えはNOです。そのシナリオでは、口ひげが許容できる解決策です。

0

私はあなたがクライアントにデータをロードしていると仮定して、返されたデータに基づいて文字列を生成したいと思います。あなたはval1とval2のを取得するAPI呼び出しの結果として、クライアント上でその関数を呼び出すことができます

function generateString(val1, val2) { 
    return `foo${val1} bar${val2}; 
} 

用に生成された文字列を返す利用できる機能を持っているだろうか?

あなたが

+0

しかし、テンプレート文字列自体の形式はコードでは分かりませんが、外部環境によって提供されます。それは構成主導のテンプレートであり、 'quotes'内のコードに存在することはできません。 –

+0

テンプレート文字列はどの形式ですか?口ひげテンプレートの場合は、基本的にはMustache.render関数を書き直そうとしています。その時点でMustacheは使用しないでください。 – Jon

0

を必要とするすべてのデータが関数にテンプレートの文字列を入れて、myData

let renderMyTemplate = data => `foo${data.who}`; 
//or 
let renderMyTemplate = ({who}) => `foo${who}`; 


let myResult = renderMyTemplate(myData); 
console.log(myResult); 
+0

しかし、テンプレート文字列自体の形式はコードには分かりません外部環境によって提供される。それは構成主導のテンプレートであり、 'quotes'内のコードに存在することはできません。 –

+0

@InquisitorShmの場合、バックエンドはJavascriptを返し、プレーンテキスト/データは返しません。テンプレート文字列はコードであり、データではありません!あなたはJSONPを見て、 'jsonpCallbackName({myTemplate:function(data){return \' foo $ {data.who}} '、myTemplate2:...})'や 'jsonpCallbackName data => \ 'foo $ {data.who} \') 'を1つのテンプレート – Thomas

関連する問題