たとえば、次のシナリオを考えてみましょう。顧客にエントリポイントのURL(のようなものhttps://our.server/customer-name/entry-point.js
)を提供して、顧客が次のように書くだけでページに製品を含めることができるようにします。
<script language="Javascript" src="https://our.server/customer-name/entry-point.js"/>
彼らが私たちの製品を置きたい場所に(はい、私は知っています、これは醜い解決策ですが、私が変更できるものではありません)。
したがって、ここで問題に直面します。他のファイルをどこからロードするentry-point.js
か()をどうにかして知る必要があります。https://our.server/customer-name/
したがって、答えはentry-point.js
動的に生成して、たとえば
var ourcompany_ourproduct_basepath = "https://our.server/customer-name/";
これを行うための明白な方法はentry-point.js
、次のように手動で作成することです。
res.write("var ourprefix_basepath = \"" + basepath.escape() + "\";");
res.write("function ourprefix_entryPoint() { /*do something*/ }");
res.write("ourprefix_entryPoint();");
ご覧のとおり、それはあまりにも悪いです。
たとえば、次のことを可能にするテンプレートエンジンはありますか?
var basepath = "https://our.server/customer-name/";
var export = {
ourprefix_basepath: basepath.escape(),
ourprefix_entrypoint: function() { /* do something */ }
};
templateEngine.render(export);
また
view.vw:
ourprefix_basepath = rewrite("{#basepath}");
function ourprefix_entrypoint() { /* do something */
ourprefix_entrypoint();
App.js:
templateEngine.render("view.vw", { basepath: "https://our.server/customer-name/" });
またはこのようなもの(あなたはアイデアを持っています)、それは応答ストリームに以下を書き込みます:
var ourprefix_basepath = "https://our.server/customer-name/";
function ourprefix_entrypoint() { /* do something */ };
ourprefix_entrypoint();
?