有没有客户端的HAML解析器?

11

我想使用JavaScript在客户端呈现我的haml代码。服务器端有很好的haml解析器,如Jadehaml.js,但我不知道客户端中是否有任何haml解析器/解码器。

更新:现在支持客户端的Jade基本上就是haml。


1
发现 jquery-haml - 不是真正的 Haml,但非常接近。 - froderik
1个回答

8

经过一番搜索,我找到了"client-side-haml-js" github项目。看起来它应该能满足您的需求:

clientside-haml-js是一个用CoffeeScript编写的编译器,将HAML格式的文本模板编译成生成HTML的Javascript函数。它受到服务器端haml Javascript项目的启发,并且已经被编写为与Ruby服务器端HAML功能兼容,支持所有主要浏览器(IE 7+、Firefox 3.6+、Chrome 10+、Safari),具有最小的运行时依赖关系(仅使用underscore.js、underscore.string和CoffeeScript(如果在您的模板中使用CoffeeScript))。

注意:haml编译器需要带有JSON解析器的浏览器。对于像IE7这样的浏览器,您还需要包含JSON实现。请参见http://www.json.org/了解更多详细信息。可以在https://github.com/douglascrockford/JSON-js上获取JSON实现。

他们的github页面上有一个示例:

var fn = haml.compileStringToJs("%h1\n  %div\n    %p\n    %span");
var html = fn();

看起来它也支持类似于jquery-templates的text/haml-template方法:

<script type="text/haml-template" id="simple">
%h1
  %div
    %p
    %span
</script>

<script type="text/javascript">
    var fn = haml.compileHaml('simple');
    var html = fn();
</script>

但是,经过查看他们的文档后,它似乎是从HAML字符串编译成将HTML字符串发送到JavaScript的代码,因此性能不如可能。例如,与其编译为HTML字符串,编译为JS API以创建元素会更有益,例如 var div = document.createElement('div'); div.setAttribute(...); div.appendChild(...)。此外,使用DocumentFragment将导致更高的性能,或者更好的方法是制作或使用虚拟DOM库。React很好,因为JSX编译成创建虚拟DOM的JS调用,这样更快。 - trusktr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接