0

我一直在研究 Javascript 模板引擎,试图找到一种让标准模板在线/离线可用的方法。

目前我有点卡在dustjs/linkedIn,这需要服务器端将模板预编译到js文件中——因为我正在使用Coldfusion8.

在 Coldfusion 中运行 Javascript 时有一些可用的稀疏链接(示例)。所以:

问题:
Coldfusion 中是否有易于使用的 Javascript?我不是在谈论toScript我们的<cfoutput><script>alert("hello")></cfoutput>,我想在 cfscheduled 任务中在服务器上运行一个 javascript 函数,比如dustjs 编译器,以获取 HTML 模板并从中编译它们:

  Hello {name}! You have {count} new messages.

对此:

(function() {
    dust.register("demo", body_0);

    function body_0(chk, ctx) {
    return chk.write("Hello ").reference(ctx.get("name"), ctx, "h").write("! You have ").reference(ctx.get("count"), ctx, "h").write(" new messages.");
    }
    return body_0;
})();

这是在dustJS compiler.js文件中完成的(我认为......)。如果不可能,除了创建将标记更改为已编译 javascript 的“coldfusion 编译器”之外,还有哪些其他选择?

谢谢你的一些建议!

4

1 回答 1

3

看看CFgroovy。尽管针对的是 groovy,但它确实是 CF 使用 Java 的通用脚本功能的一种方式 (JSR-223) 您应该能够通过它启动 Rhino 并运行您的代码。事实上,Ben Nadel 有一篇关于这样做的文章。

或者,您可以将 node 放在您的服务器上并使用 cfexecute 运行 node 来编译您的模板。

如果你让它工作,我会考虑不按计划进行编译。也许尝试以下方法之一:

  • 如果您有已定义的构建过程,则将其作为构建的一部分进行编译。
  • 按需编译,因此您的脚本 URL 可能是 script.cfm?script=whatever.js 并具有 CF 检查日期并编译模板或
  • 使用 DirectoryWatcher 事件网关来监视您的脚本文件夹并在更改时进行编译。

我最喜欢第三个选项,因为它只会在更改时编译,这可能是您想要的。

于 2012-10-05T09:14:41.530 回答