問題タブ [tagged-templates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
57 参照

javascript - タグ付きテンプレート内の変数を補間する

タグ付けされたテンプレートを使用して、パラメーターを使用してクエリを作成しています。

場合によっては、SQL パラメーターとして渡すことができない変数 (テーブル名など) をクエリに渡す必要があります。私はこれで立ち往生しています...

どうすればこれを回避できますか? ご協力ありがとうございました :)

EDIT :変数をいつ直接置換するかを示すフラグとして特別な文字を使用しました...このように、文字#が見つかったら、次の値を直接置換します。もっとうまくやれると確信していますが、どうすればよいかわかりません...

0 投票する
1 に答える
258 参照

javascript - Tagged template literals in styled-components with an optional additional parameter

Just trying to get my head around styled-components, specifically the suggestion in the docs which says you can set up media query templates like this:

That works fine and can easily be used like this:

I want to create a bunch of media templates but the docs suggest creating named ones which could be used like this:

I would prefer to pass an additional parameter to my function though to change the breakpoint, rather than create a different function for each one (not least because I want to be able to have an arbitrary number of them and call them by integer rather than a name). I tried just passing an argument to the template literal like this:

This obviously doesn't work and I have no idea how to pass an additional parameter to the function which the tagged template literal uses as I obviously don't understand how they work. Any ideas?

0 投票する
0 に答える
106 参照

javascript - タグ付きテンプレート関数の命名規則

タグ付きテンプレート関数は、コンストラクター関数が通常の関数ではないのと同じように、通常の関数ではありません。特別な方法以外で呼び出すべきではありません。new補間された文字列リテラルを使用するタグ付け関数を持つコンストラクター。

コンストラクターは Pascal Case でなければならないという規則があるため、コンストラクターであることが呼び出し元には明らかです。

  1. 関数のタグ付けに同様の規則はありますか?
  2. そうでない場合、末尾にアンダースコアを付けることを強制することは、他の規則にとってあいまいになりますか?

これが通常の関数ではない理由は、最初の引数が文字列ではないことです。

同様に、s.rawプロパティにはエスケープされていない文字列が含まれています。これを偽装する実際的な方法はありません。できたとしても、それは非常に悪い習慣です。

ダックタイピング問題

ダック型のオブジェクトを作成してメソッドに渡してすぐに失敗しないようにすることは可能かもしれませんが、engune によって生成されたオブジェクトのインターフェイスが拡張される可能性があります (たとえば、escapedRawプロパティが追加される可能性があります)。これは、通常の関数としてメソッドを呼び出すものはすべて壊れることを意味します。

s通常の関数を完全に制御できるように書くと、関数の場合、パラメーターの型はライターによって制御されないため、ここではそうではありません。