例如,考虑以下场景:我们向客户提供一些入口点 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();
?