我见过的主要差异是:
#if,#unless,#with,和#each{{this}}in块(输出当前项的字符串值)Handlebars.SafeString() (也许还有其他一些方法)if !x ...)(如果我对上述内容有误,请纠正我.)
我还缺少其他重大差异吗?
templating-engine mustache client-side-templating handlebars.js
我正在寻找一个.net模板引擎 - 简单,轻量,稳定,没有太多的依赖.我目前所需要的只是创建模板化的纯文本和HTML电子邮件.谁能给我一个好的推荐?
如果它有帮助 - 比如Java的Freemarker或Velocity库.
[更新]感谢迄今为止的答案 - 非常感谢.当你使用这些库时,我真的很喜欢推荐或战争故事.似乎是在不依次尝试每个决策的情况下做出决定的最佳方式.
所以我在John Resig的JavaScript Micro-Templating上看过这篇文章,我需要一个像这样的微模板引擎.
但他在帖子中表示,他将在他的"密友之书"中保留一个更精致的版本,并提到他希望看到它的演变.
所以我想知道,John Resig的微型模板引擎是否有更稳定/更先进的版本?如果是这样,我怎样才能获得它?这本JavaScript书籍在我的国家/地区不可用.
是否可以将JavaScript对象/哈希传递给Handlebars帮助程序调用?我想做这样的事情:
<label>Label here</label>
{{#textField {'id':'text_field_1', 'class':'some-class', size:30} }}{{/textField}}
<p>Help text here.</p>
Run Code Online (Sandbox Code Playgroud)
这是一个jsFiddle.目前它产生以下错误
Uncaught Error: Parse error on line 3:
...bel> {{#textField {'id':'text_field_1'
----------------------^
Expecting 'CLOSE', 'CLOSE_UNESCAPED', 'STRING', 'INTEGER', 'BOOLEAN', 'ID', 'DATA', 'SEP', got 'INVALID'
Run Code Online (Sandbox Code Playgroud)
或者,我可能会这样做并拆分',',但我不喜欢语法:
{{#textField "'id'='text_field_1','class'='some-class',size=30"}}{{/textField}}
Run Code Online (Sandbox Code Playgroud)
注意:我特别不希望将数据/属性(id,类,大小等)作为JSON对象传递给template()方法.我想要模板中的所有内容.
我正在寻找一个模板引擎.在HAML,SASS/Compass和ERB中进行选择时需要考虑哪些重要因素?
这可能来自于MEAN堆栈的各个部分缺乏经验,但是我在app.js代码中看到的各种样板(mean.io,hackathon-starter等)总是有一个调用使用玉石模板引擎.我知道我可以将其切换到ejs等,但我想知道是否有办法使用AngularJS将所有页面都放在.html文件中?我感兴趣的组件/模板功能似乎已经在Angular中,所以如果我尝试服务器.html文件,我不确定我输了什么?
我正在寻找一些好的模板系统,以及像Backbone.js这样的MVC框架
我知道一个这样的系统(jQuery Templating).然而,由于某些原因,同样已经停止,因此我正在寻找其他一些好的选择.
从视角来看,请建议一些足够灵活的东西.(例如,基于某些逻辑的具有启用/禁用按钮的动态视图,基于某些逻辑的具有不同样式的表格数据等)
javascript jquery jquery-plugins templating-engine backbone.js
嘿伙计们我正在使用twitter的typeahead.js,我想知道是否有可能修改hogan.js使用其他东西{{}}?
我现在正在查看缩小的代码,我不知道如何改变这么简单的东西.进行查找和替换会破坏它.
我问的主要是因为我使用的是Angular JS,但是twitter的typeahead需要一个模板引擎,导致hogan和angular的{{}}冲突.更好的解决方案是简单地修改Angular JS(我知道它不是模板引擎)并放弃Hogan以符合以下标准:
任何模板引擎都可以使用typeahead.js,只要它符合以下API:
// engine has a compile function that returns a compiled template
var compiledTemplate = ENGINE.compile(template);
// compiled template has a render function that returns the rendered template
// render function expects the context to be first argument passed to it
var html = compiledTemplate.render(context);
Run Code Online (Sandbox Code Playgroud) 我正在使用 go 模板为 kubernetes 创建 yaml 定义。我正在尝试嵌套模板,但遇到了无法重用定义的问题,因为包含时缩进是错误的。即,在一种情况下,内容需要缩进,但在另一种情况下不需要。如何控制包含内容的缩进?
下面举例。我正在重用 pod.tmpl,在第一种情况下,它可以按原样包含在内。在第二种情况下,我需要缩进整个内容,使其成为服务成员
{{ if (eq .Case "pod")
# NO indenting
{{ template "pod" }}
{{ end }}
{{ if (eq .Case "service")
service:
# need to indent! so contents become members of service:
{{ template "pod" }}
{{ end }}
Run Code Online (Sandbox Code Playgroud) 最近我通过 Composer for PHP7.2 安装了 Twig2.0,运行代码时出现这些错误,
(!)致命错误:未捕获错误:在第 4 行的 C:\wamp64\www\php-twig\example.php 中找不到类“Twig_Autoloader”
(!)错误:在第 4 行的 C:\wamp64\www\php-twig\example.php 中找不到类“Twig_Autoloader”
我在 GitHub 上查看了这些问题。
这是我的 PHP 代码,
<?php
require 'vendor/autoload.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('templates');
$options = array(
'name' => 'Sumithran',
);
$twig = new Twig_Environment($loader, $options);
Run Code Online (Sandbox Code Playgroud)
和index.twig
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Twig test</title>
</head>
<body>
<h1>Hello world</h1>
<p>And hello {{ name }}</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
怎么解决这个问题呢?
javascript ×3
mustache ×2
angularjs ×1
asp.net ×1
backbone.js ×1
compass-sass ×1
erb ×1
fatal-error ×1
go ×1
go-templates ×1
haml ×1
hogan.js ×1
jquery ×1
mean-stack ×1
node.js ×1
php ×1
sass ×1
templates ×1
templating ×1
twig ×1
typeahead.js ×1
viewengine ×1
yaml ×1