你能在速度模板中做这样的事情吗?
#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
<name>$mapEntry.key()</name>
<value>$mapEntry.value()</value>
#end
Run Code Online (Sandbox Code Playgroud)
它会像这样输出空白标签:
<name></name>
Run Code Online (Sandbox Code Playgroud)
和
<value></value>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
是否可以使用PHP检索Twig模板中的所有变量?
示例someTemplate.twig.php:
Hello {{ name }},
your new email is {{ email }}
Run Code Online (Sandbox Code Playgroud)
现在我想做这样的事情:
$template = $twig->loadTemplate('someTemplate');
$variables = $template->getVariables();
Run Code Online (Sandbox Code Playgroud)
$ variables现在应该包含"name"和"email".
我想这样做的原因是我正在使用CMS系统,我的用户动态设置我的枝条模板和变量,他们也通过API填充变量.
我想将默认值设置为未设置变量,因此我需要一个模板中存在的所有变量的列表...
我需要ERB(Ruby的模板系统)来模板化非HTML文件.
(相反,我想将它用于源文件,如.java,.cs,...)
如何从命令行"执行" Ruby模板?
有没有办法检查角度模板中的值是否在数组中?我期待这样的事情:
<div ng-class="{'myClass':1 in [1,2,5]}">Yay</div>
Run Code Online (Sandbox Code Playgroud)
如果1在数组中,则应用myClass.
这可能吗?
另外,Angularjs使用的是什么模板引擎?我在哪里可以找到它的文档?每当我尝试搜索(甚至是官方文档)时,我似乎只会出现关于指令或数据绑定的文档.
Jade看起来像一个很酷的模板引擎,我想我会在下一个项目中使用它.但是,一些语法对我来说没有意义.
这样做你得到了什么:
ul
li
a(href="#book-a") Book A
Run Code Online (Sandbox Code Playgroud)
代替:
<ul>
<li><a href="#book-a">Book A</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我理解你节省了一些打字,但对我来说似乎不太可读.我注意到在Jade的现场演示中,常规html直接通过翻译.那么做这样的事情会被认为是不好的做法:
<div class="someClass">
<h3> #{book.name} </h3>
</div>
Run Code Online (Sandbox Code Playgroud) 在我的公司,我们正在使用Rythm,因为它的设施和在项目中的易用性.在我们的项目中,我们发送了几封电子邮件(白天发送1000-2000封电子邮件); 电子邮件模板是具有动态语法(Java代码)的Rythm模板.性能似乎很好,它通过了集成测试.
尽管如此,我们已经尝试了几个内存问题,这些问题在3-4天后会导致内存泄漏.分析,我们观察到Rythm是堆中最大的对象(我们的分析大约是1天),甚至比Spring中的ClassLoader或BeanFactory还要多.
使用堆工具分析器,我们观察到RythmEngine和TemplateClassManager是最大的对象
(Instance) - (retained size bytes)
org.rythmengine.RythmEngine#1 - 10,192,894
org.rythmengine.internal.compiler.TemplateClassManager#1 - 9,223,065
org.springframework.boot.loader.LaunchedURLClassLoader#1 - 6,975,661
java.util.Vector#89 - 6,378,290
java.lang.Object[]#7549 - 6,378,254
org.springframework.beans.factory.support.DefaultListableBeanFactory#1 - 3,741,643
......
Run Code Online (Sandbox Code Playgroud)
我们可以从堆分析器工具中看到这些对象是大对象,并且它们似乎在时间上增加.
和GC根.
关于内存池:Par Eden似乎很好,CMS老一代似乎没有增加,或者至少是缓慢增长(即使在一些主要的GC之后它似乎是免费记忆).堆内存似乎很好(测试和分析大约一天),但是在生产到达最大堆后缓慢增加.
我们询问是否有人尝试过此功能(使用rythm并在几天后出现内存泄漏)或者只是提供一些如何在生产环境中使用rythm提高性能的最佳实践.或者欢迎任何关于如何处理深度内存泄漏的想法.
重要说明 [30-09-2015]:我们已经从Rythm更改为FreeMarker作为模板引擎,它似乎(正如我们的监控系统所反映的)内存更稳定,大约是最大内存的20%(-Xmx1024).我们将在本周告知更详细的信息.但似乎Rythm可能会遇到一些内存问题,几天之后它就会导致内存泄漏.
重要说明 [06-10-2015]:经过几天的密集监控后,我们使用FreeMarker作为模板引擎检查了内存是否稳定.我们已经删除了Rythm在我们产品中的所有依赖关系,因为我们的研究反映出它有一个潜在的内存泄漏问题没有解决,在几天之后驱动到OOME堆(在我们的例子中是两天).问题已结束.
我最近一直在阅读一些关于整个客户端与服务器渲染的非常有趣的文章.
http://www.onebigfluke.com/2015/01/experimentally-verified-why-client-side.html
http://www.quirksmode.org/blog/archives/2015/01/angular_and_tem.html
http://tomdale.net/2015/02/youre-missing-the-point-of-server-side-rendered-javascript-apps/
在谈到客户端时,我已经成为了一个粉丝男孩,但在我阅读这些文章之后,有些观点开始出现在支持服务器端呈现,令我惊讶的是......主要观点是:
1)您可以升级您的服务器,但不能升级您的用户设备 - 这意味着,是的...... 您可以控制服务器,因此如果它正在执行,您可以选择升级/扩展.您无法强制用户升级其设备.
2)第一个油漆与最后一个油漆 - 现在在experimentally verified...上面的链接上显示用户第一次看到页面(第一个油漆)和用户何时可以使用页面100%(最后一个油漆).现在从用户看到页面时我能想到的是,它需要大脑一些时间来处理从视觉皮层到额叶皮层的信号,然后到达用户实际开始点击他/她的手指的前置皮层,当然,如果首先渲染html,那么在后台进行加载(js文件,绑定等)时,大脑会处理一些事情.
真正让我感到有点的是Twitter报道了人们有多达10秒的加载时间进行客户端渲染,没有人应该体验过!有点儿说," 好吧,如果你没有足够好的设备,抱歉,你只需要等待. "
我一直在想,是不是有使用的好办法既客户端和服务器端模板引擎和两个客户端和服务器使用相同的模板引擎和代码.在这种情况下,它只是要弄清楚它是否是为客户提供渲染页面或让客户端自己渲染它的好处.
无论如何,如果你愿意,可以分享你对我的说法和文章的看法.我全都耳朵!
html javascript template-engine server-side client-side-templating
我想包括一个模板nested到别人cont1,cont2,cont3.并且嵌套模板应该只隐藏cont1的一个特定控件.在包含之前cont1我想为某些标志变量赋值$hideMyControl.
在嵌套模板中,我想检查是否$hideMyControl赋值.
怎么进行这样的检查?
我正在寻找一个简单的模板引擎,它可以在客户端使用JS在服务器端和PHP上运行.
这意味着我希望能够对两个用例使用相同的模板定义.
你知道任何在JS和PHP中都有官方实现的模板引擎吗?
为什么Twig文档建议使用扩展而不是包含?Symfony 2文档说因为"在Symfony2中,我们喜欢以不同的方式思考这个问题:模板可以用另一个模板来装饰." 但仅此而已.这只是作者的心血来潮还是其他什么?感谢帮助.
template-engine ×10
javascript ×3
php ×3
html ×2
java ×2
symfony ×2
twig ×2
velocity ×2
angularjs ×1
erb ×1
express ×1
memory-leaks ×1
node.js ×1
pug ×1
ruby ×1
rythm ×1
server-side ×1
templating ×1
variables ×1
xml ×1