当前位置: 首页 > 面试题库 >

带有Java编译器的客户端模板语言(DRY模板)

沈树
2023-03-14
问题内容

我希望能够一次定义模板,并使用它们从服务器端和客户端渲染HTML。(DRY原则及其他)

我正在设想的API就是这样:render(JSON,template)-> html。

我正在使用Java框架(实际上是Play框架,但是我不认为这是特定于框架的)。

我几乎同意作者的观点,显而易见的竞争者如:Mustache和Google Closure Templates不会削减它。(出于原因请参阅该帖子)

要求:

  • 必须:客户端渲染
  • 必须:客户端缓存模板文件
  • NICE:客户端的“一次编译多次执行”模板文件可快速执行JavaScript代码
  • 必须:服务器端渲染
  • NICE:本机Java实现

我看过很多帖子,建议在服务器端模板中使用Node.js。尽管这绝对可行(下划线模板,Handlebarsjs,EJS都可以正常工作),但我仍在努力查看如何与Java进行通信/组合/集成Node.js,毕竟仍然是需要输出JSON的Java框架

我看过一些帖子,提到了一些概念验证(通过http或使用JNDI)在JVM和node.js之间进行通信。但是,目前似乎没有可用的库,更不用说经过战斗测试了。

因此,将其汇总起来,您建议哪种客户端模板引擎也可以在Java中运行(或者可以通过jvm调用)?而且,如果那个“麻烦”恰好是Node.js,那么您建议使用哪种通信/库方式?


问题答案:

我现在去Mustache,并期待Handlebars.js的java实现。一旦存在,重构路径就不会那么陡峭。

编辑-2012年4月

好的,对此进行更新以供将来参考:

  • 我将服务器端模板外包给Node.js。
  • java和使用套接字实现的node.js之间的通信。
  • 从现在开始,我只需要一个客户端库(或者更好的可以在使用节点的客户端和服务器端在javascript中运行的客户端库),我可以自由选择。习惯了小胡子后,我选择了Hogan解析器(由Twitter人士提供)(http://twitter.github.com/hogan.js/)

100%DRY(即使客户端混合器和i18N捆绑来自同一来源。此外,Hogan可以在服务器端预编译模板并打开与客户端的连接,因此客户端不再需要解析模板首先连接。

快吗 闪电…



 类似资料:
  • 主要内容:编译JRXML文件,预览Jasper文件我们在上一章中生成了 JasperReport 模板(JRXML 文件)。该文件不能直接用于生成报表。它必须编译为 JasperReport 的原生二进制格式,称为Jasper文件。在编译时,我们将 JasperDesign 对象转换为 JasperReport 对象。 接口net.sf.jasperreports.engine.design.JRCompiler在编译过程中起着核心作用。该接口有

  • 你可能有兴趣知道,Vue 的模板实际是编译成了 render 函数。这是一个实现细节,通常不需要关心,但如果你想看看模板的功能是怎样被编译的,你会发现会非常有趣。下面是一个使用Vue.compile来实时编译模板字符串的简单 demo: <div> <header> <h1>I'm a template!</h1> </header> <p v-if="message">

  • 尽管 PHP 不断升级为成熟的、面向对象的语言,但它作为模板语言 没有改善多少。编译型模板,比如 Twig、Brainy 或 Smarty,提供了模板专用的新语法,填补了这片空白。从自动转义到继承以及简化控制结构,编译模板设计地更容易编写,可读性更高,同时使用上也更加的安全。编译型模板甚至可以在不同的语言中使用,Mustache 就是一个很好的例子。由于这些模板需要编译,在性能上会带来一些轻微的影

  • 如果你在 <script> 标签中编写模板,并且设置了特定的属性,那么 Framework7 会自动帮你编译所有的模板: <script type="text/template7" id="myTemplate"> <p>Hello, my name is {{name}} and i am {{age}} years old</p> </script> 其中: type="text/t

  • 当使用 DOM 内模板或 JavaScript 内的字符串模板时,模板会在运行时被编译为渲染函数。通常情况下这个过程已经足够快了,但对性能敏感的应用还是最好避免这种用法。 预编译模板最简单的方式就是使用单文件组件——相关的构建设置会自动把预编译处理好,所以构建好的代码已经包含了编译出来的渲染函数而不是原始的模板字符串。 如果你使用 webpack,并且喜欢分离 JavaScript 和模板文件,你

  • Section Contents 内建函数参考 字母顺序索引 字符串内建函数 数字内建函数 日期内建函数 布尔值内建函数 序列内建函数 哈希表内建函数 结点(对于XML)内建函数 循环变量内建函数 独立类型内建函数 很少使用的和专家级的内建函数 指令参考 Alphabetical index assign attempt, recover compress escape, noescape flu