【问题标题】:Django-like templates system for Java? [closed]类似 Django 的 Java 模板系统? [关闭]
【发布时间】:2011-02-28 18:26:25
【问题描述】:

我正在寻找 Java 模板引擎,其语法类似于 Django 模板或 Twig (PHP)。存在吗?

更新: 目标是为不同语言提供相同的模板文件。

<html>
{{head}}
{{ var|escape }}
{{body}}
</html>

可以使用 Twig 从 python (Django) 代码和 PHP 进行渲染。我正在寻找 Java 解决方案。

Java、PHP 和 python 中可用的任何其他模板系统都是合适的。

【问题讨论】:

  • 我认为这是一个非常有趣的问题!所以本质上,您正在寻找跨语言/框架的模板引擎,您可以在其中使用相同的模板,同时换掉整个其余的技术堆栈。
  • 我会喜欢类似 django 的模板引擎。
  • 我发现的最好的 java 替代品是 pebbletemplates.io

标签: java templates django-templates


【解决方案1】:

我开发了Jtwig。你可以试一试。它已成功用于一些项目。通过与 spring webmvc 的良好集成轻松设置。

只需使用 maven 或类似系统包含依赖项即可。

<dependency>
  <groupId>com.lyncode</groupId>
  <artifactId>jtwig-spring</artifactId>
  <version>2.0.3</version>
</dependency>

并配置视图解析器 bean 以返回 Jtwig。

@Bean
public ViewResolver viewResolver() {
    JtwigViewResolver viewResolver = new JtwigViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".twig");
    return viewResolver;
}

或者,如果您使用 xml 基本配置:

<bean id="viewResolver" class="com.lyncode.jtwig.mvc.JtwigViewResolver">
  <property name="prefix" value="/WEB-INF/views/"/>
  <property name="suffix" value=".twig"/>
</bean>

【讨论】:

  • jtwig 项目不再维护。
【解决方案2】:

【讨论】:

  • Sarvash,你对这些建议有什么好处吗?
  • 维基百科上有一些web templating engines的比较。
  • 查看 jandgod 项目后——我真的很害怕使用它。代码很糟糕(各种神奇的数字,注释掉的部分),并且自 2010 年 5 月以来一直没有更新。这是个好主意,但不幸的是执行不力......
  • 我已经联系了Jangod作者,他说再过半年就没有时间做这个项目了……但是GitHub上有一个fork。
【解决方案3】:

如果您想要不同语言的相同模板,您可以看看 Clearsilver。

Clearsilver 是一种语言中立的模板引擎,它通过在您的代码和模板之间插入一种语言中立的分层数据格式 (HDF) 来帮助将演示与代码分开。将 HDF 想象成 XML,但要简单得多。

它用于许多高流量网站,包括 Yahoo!网上论坛、Gmail 静态 HTML、orkut.com、wunderground.com 等。与它一起使用的实现语言包括 C/C++、Python、Java、Ruby、PHP、C# 等。 Python 框架还包括一个 Page-Class 调度程序和简单的 ORM,它有点像 Ruby-On-Rails,因为它使数据库表、HDF 和模板之间的映射只需要很少的代码。

主要的 Clearsilver 实现是用 C 语言实现的,带有特定于语言的包装器。还有一个 100% 由 Google 制作并开源的 Java 实现,称为 JSilver。

http://www.clearsilver.net/

http://code.google.com/p/jsilver/

【讨论】:

    【解决方案4】:

    当然,Java 有各种各样的模板引擎。我使用过 FreeMarker、Velocity 和 StringTemplate。我不确定你所说的类似 Django 的语法是什么意思;每个引擎在模板方法上都有自己的变体。

    要比较一些不同的引擎,请查看here

    【讨论】:

    • 我很确定“类 Django 语法”意味着语法与 django 中的类似:docs.djangoproject.com/en/dev/topics/templates
    • 如果您甚至不知道问题是关于什么的,为什么要回答...
    • 因为3年前我回答问题的时候,更新后没有全部的细节:目标是有相同的... 只看问题的第一行并解释对我来说,催促更多信息是不合适的?
    【解决方案5】:

    您可以使用Mustache.javaHandlebars.java。小胡子非常简约。 Handlebars 与 Mustache 相似且兼容,但您可以非常轻松编写自己的扩展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 2011-04-07
      • 2010-12-24
      • 1970-01-01
      • 2012-08-27
      相关资源
      最近更新 更多