我试图推销自己尝试在服务器上构建增强的 Jquery Mobile 标记(正在运行Coldfusion8
),然后尝试使用DustJS(Javascript 模板引擎)将标记预编译为 js 字符串,我希望将其作为服务器一个静态文件。
我想我可以尝试在 Coldfusion 中添加插件。这是我想做的事情:
从 Coldfusion 中这样的模板开始:
<cfsavecontent variable="renderedResults">
<cfoutput>
{##person}{root}: {name}, {age}{/person}
</cfoutput>
</cfsavecontent>
通过 NodeJS 上的DustJS编译器运行它会返回如下内容:
(function() {
dust.register("demo", body_0);
function body_0(chk, ctx) {
return chk.section(ctx.get("person"), ctx, {
"block": body_1
}, null);
}
function body_1(chk, ctx) {
return chk.reference(ctx.get("root"), ctx, "h").write(": ").reference(ctx.get("name"), ctx, "h").write(", ").reference(ctx.get("age"), ctx, "h");
}
return body_0;
})();
然后我将其另存为someStaticTemplate.js
. 该文件被拉入客户端并填充动态数据。
我的问题是在 Coldfusion 中编译它。
我正在使用Cfgroovy
为了在服务器上运行 Javascript:
<cfimport prefix="g" taglib="../../tags/cfgroovy/" />
35k zipped plugin here
<!--- COMPILE --->
var dustedTemplate = dust.compile( variables.tempLateToCompile, variables.templateName);
<!--- OUT --->
variables.put("renderedResult", dustedTemplate);
</g:script>
但是这样做会返回以下错误:
type: sun.org.mozilla.javascript.internal.JavaScriptException
message: [object Error] (<Unknown Source>#1)
所以我一定做错了什么......
问题:
是否有可能将此服务器端编译成 JS?如果是这样,任何想法如何包含插件。我也看过这篇文章,但我已经在扩展我能做的事情了,所以我希望这可以解决我在上面尝试的问题。
感谢您的一些投入!
BOUNTY:
好吧,我放弃尝试自己了。赏金时间...我正在寻找一个 Coldfusion 代码片段,它允许我
a) 在 CFgrooy 标记或替代 javascript 启用设置中加载 DustJS 插件
b) 让我运行 DustJS Javascript-compile 函数来转换我的模板
{##person}{root}: {name}, {age}{/person}
进入这个:
(function() {
dust.register("demo", body_0);
function body_0(chk, ctx) {
return chk.section(ctx.get("person"), ctx, {
"block": body_1
}, null);
}
function body_1(chk, ctx) {
return chk.reference(ctx.get("root"), ctx, "h").write(": ").reference(ctx.get("name"), ctx, "h").write(", ").reference(ctx.get("age"), ctx, "h");
}
return body_0;
})();
如果这在技术上是不可能的,我愿意接受替代方法,允许我在服务器上创建一个基于 HTML 并包含占位符的模板,以便我可以在客户端上添加动态数据。
谢谢!