问题标签 [templating-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
114 浏览

javascript - JavaScript 模板引擎 - 将左手三进制(无赋值)转换为条件语句

我找到了完美的JavaScript 模板引擎,由 Krasimir 构建,它正是我所需要的。
模板引擎工作得很好,但我自然无法抗拒稍微破解它的冲动,甚至可能添加一些功能。
不幸的是,我无法理解某些代码。

这是代码:

这是我不明白的行:

我对 JavaScript 并不陌生,但那是一些看起来很奇怪的代码,据我所知,它是一个没有左手赋值的三元运算符(如果我错了,请纠正我)

所以为了更好地理解作者是什么这样做我试图将三元运算符转换为条件语句。

这是我到目前为止所拥有的:

这失败并抛出错误“Uncaught SyntaxError: Unexpected token if”

任何人都可以帮我将这段代码转换为条件语句,甚至可以解释一下代码的作用吗?

出于好奇,谁能告诉我 IE8 是否支持此代码?
注意:我不介意 IE8 支持我只想知道这个模板引擎是否支持 IE8。

您可以在 Krasimir 的网站或 Krasimir 的Github上找到模板引擎

0 投票
1 回答
124 浏览

java - Rythm 使用带有@i18n 标签的转换器和嵌套标签

首先我对Rythm很满意!出色的工作是免费的。

最近我开始使用 Rythm 对我的模板进行国际化,有些事情似乎比需要的更麻烦。我想知道是否有更好的方法来做我想做的事情。

1. 将标签链接到@i18n()

这不起作用:

  1. @i18n("about.text").nl2br()
  2. @i18n("about.text").mytransformer()

解决方法是:

这有效,但并不漂亮。

2. @i18n() 在 javascript 中转义

如果我有一个部分

那么 Rythm 会很好地避开该描述中的任何 ' 或 "。但是当我使用时:

逃脱没有完成。我也尝试过:

但两者都不起作用(见上文)。再次起作用的是使用

3. 使用@i18n() 中的标签作为参数

有时我需要一个翻译字符串中的链接,如下所示:

我想在模板中使用它,如下所示:

注意:person这里是一个类型为模板的参数Person@genlink是使用查找生成链接的便利模板(或标签)。我目前使用的解决方案是:

请注意,语言资源已更改为:无论如何,这可能是编写资源字符串的更好方法,但如果我能以某种方式about.text=See my profile here {0} 摆脱它并编写以下代码,那就太好了:@assign()

编辑:

我尝试了您的建议,但只是部分成功。

  1. 链标签到@i18n()

doing@("about.text".i18n())有效,而 doing@("about.text".i18n().nl2br())无效,并抱怨@i18n(). 如果我像这样添加缺少的参数:@("about.txt".i18n("").nl2br())它抱怨nl2br()未定义String

对我有用的是:@s().i18n("about.txt").nl2br()

更奇怪的是,当我在 Chrome 上运行你的小提琴时,它可以完美运行。当我在 Mac/Safari 上运行它时,我得到了与我刚才描述的相同的错误:见截图:节奏 Safari 截图

  1. @i18n()在 javascript 中转义

按照你的解释工作!

  1. 使用内部标签@i18n()作为参数

明白了。当前的解决方案@assign()适合一次性使用。Using@def()是一个更好的通用解决方案。

0 投票
1 回答
1784 浏览

jquery - 使用 ajax 更新渲染的模板

我有这段代码可以从我使用 ajax 从我的 mysql db 获得的数据中呈现模板。

获取模板数据的代码:

在网页中显示模板:

问题在于,模板引擎以这种方式呈现新模板,而不是每次都更新旧模板中的数据。

有什么建议可以让它更新已经渲染的模板而不是渲染一个新模板吗?

0 投票
1 回答
5439 浏览

freemarker - Freemarker 分页符

我正在使用 Apache freemarker 构建 PDF 文档报告。我有一种情况,我的一半页面都是文本,我需要在它下面添加一个表格。表格大小是动态的,有时它与文本放在同一页面中,有时不适合,如果不适合,那么我会在下一页上获得一些表格内容。我想测量表格是否适合同一页面,如果不适合,我想将其打印在单独的页面上。有没有办法做到这一点?

就我而言,如果合适的话,在同一页上打印表格很重要。

0 投票
1 回答
1143 浏览

html - 使用aurelia模板引擎增强动态添加html

我正在尝试以动态/编程方式将代码插入 DOM,并让 aurelia 像任何其他模块一样处理插入的代码。

棘手的部分是插入的 html 有一个<compose view-model='A'></compose>元素,它本身应该加载一个模块“A”。

我有一个gistRun here

应用程序.js

0 投票
3 回答
1905 浏览

loops - MailJet 嵌套循环

我们正在使用 mailJet 构建我们的电子邮件,到目前为止效果很好。我们当前的问题是,我们希望在循环中的循环中有一个循环(所以嵌套循环)第一个循环工作正常,第二个内部循环工作正常,但第三个不再工作:

这在我们的模板中。如果我删除带中断的内部循环,一切都很好。

如果我启用模板错误报告,我会收到以下消息:

但是如果我尝试使用 {{tripSegment.breaks}} 打印它,我会收到以下消息:

并且该字段绝对是一个数组,例如trips或tripSegments,因此基本上它应该可以工作。

MailJet 中的嵌套循环我做错了什么?

编辑:

我发送到 Mailjet 的对象结构如下所示:

0 投票
1 回答
198 浏览

razor - 视图引擎和模板引擎是一回事吗?

我很好奇两者之间有什么区别,如果有的话。

例如,.net Razor 是视图引擎/技术还是模板系统?JSF 的 Facelets 是视图引擎还是模板系统?

0 投票
2 回答
94 浏览

php - PHP:作为 API+视图或只是 API

注意:这是一个自以为是的问题。我问这个是因为我找不到合适的文章来涵盖我的担忧。

PHP(单独或与 laravel 等框架一起使用)可用于后端和前端(使用 Blade、Smarty 等模板引擎)开发。

我担心的是:

  1. 使用模板引擎并在 PHP 中创建视图是否很好?
  2. 将 PHP 用作后端技术并创建 API,让前端使用前端开发人员选择的任何其他语言(如 Angular、React 等)构建。
  3. 如果我使用模板引擎,我的应用程序是否在前端技术选择和后端技术选择之间变得过于紧密?

PS:我希望我的担忧是清楚的,如果不是,我会详细解释。

0 投票
1 回答
150 浏览

python - DTL 和 Jinja 等模板语言/引擎如何表达和管理各种模板文件之间的关系?

我专门使用 Django 和 Jinja2。这是我第一次尝试在没有 CMS 帮助的情况下使用模板来选择哪些模板并将它们放在一起。

出于某种原因,我似乎无法理解一堆碎片是如何组合在一起的。

我对这些概念感到满意:

  • 模板引擎处理模板和模型以产生有用的结果。
  • 模板文件描述了如何将模型数据放入其中以产生该结果。
  • 应用程序开发人员以编程方式与表示模板文件的引擎和模板对象进行交互。程序员负责选择模板文件,提供数据,并将其全部交给引擎。然后做一些有用的事情,引擎会返回。

但我正在努力解决的是:

  • 可以编写模板文件以相互继承,从而促进 DRY。
  • 模板文件包含有关其继承的信息。

而现在我倒下了。

  1. 这是如何运作的?这种关系在系统中的什么地方使用?
  2. 如果我将基本模板传递给引擎,引擎如何知道应该使用哪些子模板?
  3. 如果我将一个子模板传递给引擎,好吧,该模板包含有关它扩展的模板的信息,但是如果父模板需要的不仅仅是一个子模板怎么办?

我觉得我对全局有错误的理解。也许我不明白哪些职责属于模板,哪些属于应用程序?

非常感谢!

编辑:

我想我第一次尝试阐明我的问题并没有奏效。这是另一个镜头:

一些模板

图 1 显示了我拥有的一些模板(假设)。有一个基本模板、一个页眉模板,以及正文、侧边栏和页脚模板各两个。

有一棵继承树。每个模板都指定(如果可能的话)它扩展了哪个模板。

这就是问题所在。只考虑正文和页脚模板。他们扩展了基地。但在我的理解中,我只能选择其中之一进行渲染。如果我选择其中一个主体,那么我无法选择我想要的页脚。如果我选择其中一个页脚,那么我无法选择我想要的正文。如果我希望能够同时选择正文和页脚,在我的理解中,我必须编写四个模板,每个组合一个。当然这不可能是它的工作原理?

然后我们有侧边栏。假设我继续制作这四个模板。那么,我的侧边栏应该扩展四个中的哪一个?如果我希望能够为所有四个布局选择任一侧边栏,那么我现在必须创建八个模板!图 2 显示了不同的组合。

在一个实际项目中(不仅仅是像我正在从事的个人项目),我希望处理的不仅仅是这些事情。除了已经描述的不同布局之外,我还需要侧边栏中的不同块,根据用户是否登录的不同布局,各种各样的东西。我可以很容易地想象需要编写数百个模板来涵盖所有可能性。

如果这确实是模板系统的工作方式,那么我应该改用什么?

0 投票
1 回答
323 浏览

c# - 在自定义的类似 HTML 的结构中查找开始和结束标签

我正在使用 C# 开发 HTML 模板引擎。我想实现一些与 Handlebars.Net(Handlebars.js 的 C# 实现)等库相同的功能,除了使用基本的字符串操作(查找/替换)而不是完整的编译器。

语法将是这样的:

我希望用 Regex 进行简单的字符串替换,但我意识到 Regex 在这方面会有缺点,例如在下面的示例中找到结束标记(它会找到第一个嵌入的 {{/each}} 而不是最后一个解析第一个标签):

为了解析每个标签。“DOM”可以在彼此内部嵌入多个标签(想想嵌入的 foreach 循环 x4)。什么是实现这一目标的好方法?