【问题标题】:Templates compiled to javascript in a Java environment在 Java 环境中编译为 javascript 的模板
【发布时间】:2015-03-16 14:27:51
【问题描述】:

来自 Node.js,现在使用 Java 我想知道如何使用 Java 实现我使用 Node.js 所做的事情,更具体地说:如何将我的模板编译成 JS 函数。

我之前所做的是使用 EJS 模板,然后将它们编译成一个 JS 文件,该文件公开了从 JS 调用带有参数的函数,这些函数返回一个 HTML 字符串,我可以用它来更新我的视图。

这样做的好处是我可以在单独的文件中编写模板,(EJS)然后动态 Grunt/EJS(我猜,这是来自 Sails.js 内部逻辑)将模板转换为函数,合并所有它们并最终生成一个可在我的应用程序中使用的文件,我只需要调用一个函数,提供参数就可以了:我得到一个动态生成的视图。

我想在 Java 环境中实现同样的目标,使用 Ant,也许是 maven,但我不知道如何做到这一点,因为我是 Java 新手。

编辑:

我说的是客户端模板,我只是想避免在 JS 字符串中编写 HTML 代码并将它们拆分为单独的文件以便我可以更轻松地维护它们的传统方式。我只需要从 JS 中使用它们,而不是从 Java 中使用它们,但我需要使用 Ant 从 Java 环境中“编译”它们。

【问题讨论】:

  • 不清楚您是在询问 Java 元编程(通过创建模板作为构建的一部分编译成 Java 文件),还是询问与 Java 兼容的 Web 视图模板。对于后者,请查看 JSP(Java 服务器页面)、String TemplateVelocity。您也可以将它用于元编程,但可能有更专业的工具。这个问题相当广泛且基于意见,但是......
  • @EricHughes 我认为他在谈论将模板转换为 JavaScript 函数的客户端模板系统(如本例中的 doT 或 EJS)。我认为答案是一些自定义代码是必要的;我有一组自己的 Ant 任务要做。
  • 正是@EricHughes,我说的是客户端模板。如果您有任何资源或教程,请指导我吗?
  • This 已经过时了几年,但似乎符合您的目标。但是,如果 Node.js/Grunt/EJS 正在做你想做的一切,你是否禁止从 Ant 调用 Grunt 来完成你想要的特定任务?
  • 我不能使用 Node.js 环境让我很懊恼,我必须在这里使用 Java/Ant。

标签: java javascript node.js sails.js


【解决方案1】:

这有点类似于this postthis one,所以你可以看看那里是否有其他有用的答案。

一个共识似乎是 Mustache,它有一个 Java 实现的编译器(以及其他风格)可以作为 Ant 目标执行。这是一个没有逻辑的模板,所以你可能想找到另一个解决方案。

因为可以从 Ant 调用 Node.js 脚本,所以没有 Node.js 似乎是一种人为的限制。如果您能说服您的团队允许使用 Node.js,您将在模板选择上有更多选择和灵活性。

Node.js 与 Java 工具没有非此即彼的关系。在一个项目中两者都有足够的空间,我参与过使用 Node.js 的 C# 项目,就像我参与过使用 JRuby、Java 和 Rails 的项目一样。这些技术都不排斥其他技术。

请注意,我建议您尝试说服人们切换到 Node.js 作为环境、迁移现有代码或使用 Grunt,但如果它是一个有用的工具很熟悉,我想不出一个很好的理由来拒绝你使用它。

【讨论】:

  • 我完全同意你的观点,Node.js 的限制是人为因素造成的,他们基本上不想了解另一种语言/环境,因为它主要是花钱,而且也很复杂如果需要在生产中安装,配置和使用。
  • 在回应您的同事时,我想说:如果您已经在使用客户端 Javascript,那么它不是一门新语言,只是对熟悉的语言的新用法。如果你只使用 Node.js 和一些东西来编译模板,它应该是你生活中最小的一部分,这没什么大不了的。但是,它还可以让您访问诸如 JSHint 和 node-unit 或 unitjs 或其他此类有用的工具以简化 Javascript 的可维护性,从而节省时间和金钱。
【解决方案2】:

另一个解决方案是使用我昨天发现的这个库。我试过了,效果不错,有些功能对开发模式也很有用,比如模板上的观察者。

http://jcruncher.org/

我想我会去的,只是想知道作者和他的含义,希望很快能看到兼容 Handlebars 3.0.0 的版本,以及 GitHub 上的源代码。

P.S:你可以在CDN上找到handlebars编译器(选择2.0.0版本):

http://cdnjs.com/libraries/handlebars.js/ https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.runtime.min.js

【讨论】:

    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 2021-04-23
    相关资源
    最近更新 更多