2012-02-21 73 views
2

我很困惑,这种符号在第一个使用它的模板引擎成功后确实传播了很多。符号是{{bla}}各种JS模板;为什么两个{?

有没有人知道有两套{}的实际原因?我认为它读得很差,弃用的jQuery更有意义($ {bla})

+7

可能是因为它不太可能干扰正常文本,最大限度地减少逃脱东西的需要。 – 2012-02-21 20:16:13

+0

我原以为在他的html标记中不需要经常有{或}。在任何时候我都不得不很难得到一个奇怪的符号? – AlexG 2012-02-21 20:29:53

+0

在HTML(CSS,嵌入式JavaScript等)中始终使用'{'和'}'以及实际页面上的文本。我宁愿有一些容易记住的东西,例如双花括号,而不是字符组合。任何人都可以记住他们的头顶如何写一个CDATA?我总是不得不谷歌它.. – 2012-02-21 20:37:56

回答

2

这是因为它不是经常使用的字符组合。

模板解析是关于正则表达式,然后将文本转换为标记,然后将这些标记编译为另一种语言(如HTML)。

由于我们不想捕捉正则表达式中的常见字符,我们需要使用那些不常见的字符组合。

这与PHP使用<?php ?>和ASP使用<% %>的原因相同。

Twig一样,词法分析器查找{{ }}{% %}以查找Twig命令。如果我不得不使用{ },那么每次我在模板中的任何地方(不仅仅是HTML标记),我都必须逃避它。而且由于模板语言的特点是易于使用,所以该语言需要尽可能区分它的“令牌”。

+1

我应该补充说,{{}}没有什么新东西,它不是由handlebars.js发明的。 – 2012-02-21 20:46:58

+0

我接受了答案,因为它很可能是这些模板引擎作者的意图。但是,我仍然不相信这是最可读的符号:) – AlexG 2012-02-22 14:46:22

-1

Distal如何在不需要任何转义字符(如{{}}的情况下工作? http://code.google.com/p/distal

+0

也许有不同的设计?这是脱离主题,-1。按照该项目的规模,我猜测自我推销。 – 2012-02-22 14:07:01

+0

另外,它不是一个真正的模板语言(通过我在项目的首页上看到的)。它看起来像使用DOM和HTML属性。 – 2012-02-22 14:19:27

+0

@Louis:OP没有提及任何特定的模板引擎,所以所有的模板引擎都是公平的游戏。不脱离主题。 - 这是一种模板语言。看到TAL规范在这里http://wiki.zope.org/ZPT/TAL – 2012-02-22 14:59:28