我偶然发现了 HAML,这是一种标记内容和编写 HTML 模板的有趣而漂亮的方法。
因为我使用 Python 和 Django 来满足我的 web 开发需求,所以我想看看是否有一个 HAML 的 Python 实现(或者一些类似的概念——不需要完全相同)可以用来替代 Django 模板引擎。
我会去 GHRML看看,哈姆尔找根西。作者承认它基本上是用于 Python 的 Haml,并且大部分语法是相同的(它在 Django 中工作)。这里有一些 GHRML 来告诉你它们有多接近:
%html %head %title Hello World %style{'type': 'text/css'} body { font-family: sans-serif; } %script{'type': 'text/javascript', 'src': 'foo.js'} %body #header %h1 Hello World %ul.navigation %li[for item in navigation] %a{'href': item.href} $item.caption #contents Hello World!
这实际上并没有回答您的问题,但是 HAML 的 CSS 组件 SASS可以在任何框架中自由使用。我现在正在用它对付姜戈。
你可能会对 SHPAML 感兴趣:
Http://shpaml.com/
我正在积极维护它。它是一个简单的预处理器,所以它没有绑定到任何其他工具,如根氏。我碰巧使用它与 Django,所以有一点 Django 的支持,但它不应该干扰大多数其他用例。
我不确定 GHRML 的状态如何,因为我最近才开始研究它。无法找到它的回购,原来的开发人员没有时间了,它和维护是由其他人在该项目的兴趣。任何额外的信息都会很有帮助。
不幸的是,随着这些事情的发展,我开始编写自己的 HAML 样式处理器;)
Http://dasacc22.wordpress.com/2010/05/03/python-implementation-of-haml/
目前它还不适合生产使用(它现在只有4天大,但是在这4天里塞满了60多个小时) ,但是任何有兴趣的人都可以在这里查看。它有一系列已经实现的特性,这些特性使它成为一个非常有用的玩具,当我在下周清理代码库时,我希望看到它取代我所有的自定义 XSLT/xpath 扩展和模板。
我也在找,我还没试过,但找到了这个:
Http://github.com/jessemiller/hamlpy
我刚刚做了这个 http://github.com/fitoria/django-haml它仍然在非常早期的阶段,但它的工作。
Daniel Skinner 的项目(上面提到过)似乎已经被重命名为 DMSL。它似乎非常强大,模拟 HAML,但允许您使用 Python 函数,lambdas,理解等在它的语法: https://github.com/dasacc22/dmsl
我的项目 PyHAML是一个 Mako 预处理器,它提供了非常类似于 HAML 的语法。有些 Ruby 不能很好地翻译成 Python,因此有一些差异,但精神是相同的。
我偶然发现 Jade 在做 node.js 的工作,当我回到 Django 时也在寻找类似的东西。我找到了 派翠德,尽管它几乎正是我所寻找的,但它在 Django 中处理错误和调试的能力很差。
您可能对 普利姆感兴趣,它是 苗条的一个成熟的 Python 端口。
我会用这一个,它似乎是最标准的一个: https://pypi.org/project/HamlPy3/0.83.0/
假设您正在使用 Python 3,那么在 Django、 Flask 甚至是独立使用它时应该不会遇到任何问题。
您可能想尝试 超级标签: 一种新的基于缩进的 HTML 模板语言,它受到了 HAML 的强烈启发。Hypertag 具有非常简洁的语法,提供完整的 姜戈集成和许多高级特性: 本机定制标记、 DOM 操作、类 Python 导入、复杂表达式、过滤器、控制块(for,if,try...)等等。看这里:
免责声明: 我是作者,如果有任何问题或疑问,我很乐意提供帮助。