【问题标题】:Is it possible to compile HTML markup to templatable javascript on Coldfusion server-side?是否可以在 Coldfusion 服务器端将 HTML 标记编译为可模板化的 javascript?
【发布时间】:2012-10-05 08:51:04
【问题描述】:

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

目前我有点卡在dustjs/linkedIn,这需要在服务器端将模板预编译成jsfile - 因为我正在使用Coldfusion8,所以很困难。

在 Coldfusion (example) 中运行 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 编译器”之外,还有哪些其他选择?

感谢您的努力!

【问题讨论】:

    标签: javascript templates coldfusion compilation server-side


    【解决方案1】:

    看看CFGroovy。尽管针对的是 groovy,但它确实是 CF 使用 Java 的通用脚本功能的一种方式 (JSR-223) 您应该能够通过它启动 Rhino 并运行您的代码。事实上,Ben Nadel 有一个article on doing this。

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

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

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

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

    【讨论】:

    • 太棒了!我也找到了 Ben Nadels 帖子的链接,但不知道 directoryWatcher。凉爽的!我现在正在尝试cfgroovy 和dirWatcher。必须能够让它工作。
    • 我希望我能接受,我是 BarnyR 而不是 BarneyB :)
    • 虽然不是你,但你有关于如何设置 CfGroovy 的链接吗...无法让它工作。
    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2012-09-09
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多